在使用JDK1.7及以上版本时无法连接数据库、无法连接sftp. 只有将环境变量改为JDK1.6后才可以使用。
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在使用JDK1.7及以上版本时无法连接数据库、无法连接sftp. 只有将环境变量改为JDK1.6后才可以使用。相关的知识,希望对你有一定的参考价值。
---- cause ---------------------------------------------------------------------
Exception: java.sql.SQLException:Software caused connection abort: recv failed
如果是的话
在jdk1.7后已经取消了对odbc的支持
jdk1.6中还支持
所以有差别
如果使用jdbc方式的话
应该都是可以连接上的 参考技术A 你是不是JDK1.6没卸载直接装了JDK1.7?追问
已经卸载了
参考技术B jdk不会有这样的限制 , 你可以查看一下 , 是否是第三方SDK 依赖的jar版本引起的问题关于Support库28及以上版本无法查看源码问题
不知道大家有没有注意到这么个问题:
在最新创建项目的时候,有了 User androidx.* artifacts
这样一个选项。可能你还不知道 androidx
的意思,可以这样理解,androidx 代替了之前的一系列的 support
库。如果你选择了 androidx
就表示在你新创建的项目里面使用的支持库就是 androidx
了而不是之前我们用的 support
类型的支持库了。
假设这里不勾选那么就说明我们依然使用之前的 android.support.*
这种类型的支持库,比如implementation ‘com.android.support:appcompat-v7:28.0.0‘
implementation ‘com.android.support.constraint:constraint-layout:1.1.3‘
等等。
这个时候你新建的项目如果编译的时候用的 api 28,也就是在build.gradle
中是 compileSdkVersion 28
这个是你会发现,当你查看 support
库中的代码的时候没法看了,变成下面这样了
没法看源码了,只能看到 .class
了。这是因为:
在 Android 28.0.0 已经没有给 Support Library 28.0.0 提供源码查看了,即便我们使用了 Android 28 进行编译项目,用了 Support Library 28.0.0,这个时候当你查看 Support Library 中的类的时候会发现无法查看源码,看到的只是 xxx.class
。这是因为在 Android9.0(API 级别 28)发布后,新版本支持库 AndroidX 随之诞生了,它属于 JetPack,除了包含了原先支持库中的内容,还包含了最新的 JetPack 组件。
在使用 api 28 的时候我们仍然可以继续使用支持库,不过所有的新库的开发都在 androidx 中进行了,因此我们是看不到源码的(之前的版本是可以看到源码的),Google 建议所有的新项目使用 androidx 库。
因此解决方案
拥抱 androidx
库,这也是 Google 所推荐的
另外一个方法就是使用 28 以下的版本来进行编译:比如:
compileSdkVersion 26
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation 'com.android.support:appcompat-v7:26.1.0'
implementation 'com.android.support.constraint:constraint-layout:1.1.3'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'com.android.support.test:runner:1.0.2'
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
}
这样是仍然可以查看 support
中类的源代码的。
以上是关于在使用JDK1.7及以上版本时无法连接数据库、无法连接sftp. 只有将环境变量改为JDK1.6后才可以使用。的主要内容,如果未能解决你的问题,请参考以下文章