详细迁移分析报告
19-11-7 下午4:06
F:/tmp/wamt/ROOT.war
9
已标记的规则
781
结果总数
-
源选项
‑‑sourceAppServer=liberty ‑‑sourceJava=oracle8目标选项
‑‑targetAppServer=liberty ‑‑targetJava=java11扫描选项
‑‑excludePackages=com.ibm, com.informix, com.mchange, com.microsoft, com.sybase, com.sun, java, javax, net, oracle, org, sqlj, _ibmjsp
规则严重性摘要
严重规则
Java SE 版本迁移 / Java SE 11 兼容性影响
-
规则帮助
sun.*
API 是不受支持的 JDK 内部 API,可能会随时移除。 在 Java SE 11 中已移除了sun.misc.BASE64Encoder
和sun.misc.BASE64Decoder
。请改用 Java SE 8 中添加的受支持的java.util.Base64
类。 此外,在 Java SE 11 中已移除了sun.misc.Unsafe.defineClass
类。 请改用受支持的java.lang.invoke.MethodHandles.Lookup.defineClass
类。有关更多信息,请参阅 Removal and Future Removal of sun.misc and sun.reflect APIs、 Class Base64 文档和 MethodHandles.Lookup 文档。
结果
文件名 引用详细信息 匹配条件 行号 ROOT.war/WEB-INF/lib/guava-20.0.jar com/google/common/cache/Striped64$1.class 方法 run sun.misc 324 方法 run sun.misc 326 方法 run sun.misc 331 方法 run - 局部变量特征符 sun.misc 333 方法 run - 方法返回类型 sun.misc 类特征符 sun.misc com/google/common/cache/Striped64$Cell.class 字段 UNSAFE sun.misc 方法 cas sun.misc 102 静态初始化程序 sun.misc 110 静态初始化程序 sun.misc 112 com/google/common/cache/Striped64.class 字段 UNSAFE sun.misc 方法 access$000 sun.misc 23 方法 access$000 - 方法返回类型 sun.misc 方法 casBase sun.misc 163 方法 casBusy sun.misc 170 方法 getUnsafe sun.misc 320 方法 getUnsafe sun.misc 323 方法 getUnsafe - 方法返回类型 sun.misc 静态初始化程序 sun.misc 300 静态初始化程序 sun.misc 302 静态初始化程序 sun.misc 304 com/google/common/hash/LittleEndianByteArray$UnsafeByteArray$1.class 方法 getLongLittleEndian sun.misc 131 方法 putLongLittleEndian sun.misc 136 com/google/common/hash/LittleEndianByteArray$UnsafeByteArray$2.class 方法 getLongLittleEndian sun.misc 142 方法 putLongLittleEndian sun.misc 151 com/google/common/hash/LittleEndianByteArray$UnsafeByteArray$3.class 方法 run sun.misc 175 方法 run sun.misc 178 方法 run sun.misc 183 方法 run - 局部变量特征符 sun.misc 186 方法 run - 方法返回类型 sun.misc 类特征符 sun.misc com/google/common/hash/LittleEndianByteArray$UnsafeByteArray.class 字段 theUnsafe sun.misc 方法 access$200 sun.misc 126 方法 access$200 - 方法返回类型 sun.misc 方法 getUnsafe sun.misc 169 方法 getUnsafe sun.misc 174 方法 getUnsafe - 方法返回类型 sun.misc 静态初始化程序 sun.misc 195 静态初始化程序 sun.misc 196 静态初始化程序 sun.misc 199 com/google/common/primitives/UnsignedBytes$LexicographicalComparatorHolder$UnsafeComparator$1.class 方法 run sun.misc 345 方法 run sun.misc 348 方法 run sun.misc 353 方法 run - 局部变量特征符 sun.misc 356 方法 run - 方法返回类型 sun.misc 类特征符 sun.misc com/google/common/primitives/UnsignedBytes$LexicographicalComparatorHolder$UnsafeComparator.class 字段 theUnsafe sun.misc 方法 compare sun.misc 375 方法 compare sun.misc 376 方法 getUnsafe sun.misc 339 方法 getUnsafe sun.misc 344 方法 getUnsafe - 方法返回类型 sun.misc 静态初始化程序 sun.misc 321 静态初始化程序 sun.misc 323 静态初始化程序 sun.misc 326 com/google/common/util/concurrent/AbstractFuture$UnsafeAtomicHelper$1.class 方法 run sun.misc 951 方法 run sun.misc 954 方法 run sun.misc 959 方法 run - 局部变量特征符 sun.misc 962 方法 run - 方法返回类型 sun.misc 类特征符 sun.misc com/google/common/util/concurrent/AbstractFuture$UnsafeAtomicHelper.class 字段 UNSAFE sun.misc 方法 casListeners sun.misc 1002 方法 casValue sun.misc 1008 方法 casWaiters sun.misc 996 方法 putNext sun.misc 990 方法 putThread sun.misc 985 静态初始化程序 sun.misc 946 静态初始化程序 sun.misc 949 静态初始化程序 sun.misc 971 静态初始化程序 sun.misc 972 静态初始化程序 sun.misc 973 静态初始化程序 sun.misc 974 静态初始化程序 sun.misc 975 静态初始化程序 sun.misc 976 静态初始化程序 sun.misc 981 ROOT.war/WEB-INF/lib/lts-tasktracker-1.6.9.jar com/github/ltsopensource/tasktracker/runner/JobRunnerDelegate$InterruptibleAdapter.class 类实施 sun.nio.ch com/github/ltsopensource/tasktracker/runner/JobRunnerDelegate.class 字段 interruptor sun.nio.ch 方法 blockedOn sun.misc 189 方法 blockedOn sun.nio.ch 189 方法 blockedOn - 方法参数 sun.nio.ch 方法 run sun.nio.ch 68 方法 run sun.nio.ch 70 方法 run sun.nio.ch 131 构造函数 sun.nio.ch 55 ROOT.war/WEB-INF/lib/netty-all-4.0.33.Final.jar io/netty/handler/ssl/util/OpenJdkSelfSignedCertGenerator.class 方法 generate sun.security.util 66 方法 generate sun.security.x509 50 方法 generate sun.security.x509 51 方法 generate sun.security.x509 52 方法 generate sun.security.x509 53 方法 generate sun.security.x509 55 方法 generate sun.security.x509 57 方法 generate sun.security.x509 60 方法 generate sun.security.x509 62 方法 generate sun.security.x509 64 方法 generate sun.security.x509 65 方法 generate sun.security.x509 66 方法 generate sun.security.x509 70 方法 generate sun.security.x509 71 方法 generate sun.security.x509 74 方法 generate sun.security.x509 75 方法 generate sun.security.x509 76 方法 generate sun.security.x509 77 方法 generate sun.security.x509 79 io/netty/util/internal/Cleaner0.class 方法 freeDirectBuffer sun.misc 64 方法 freeDirectBuffer sun.misc 66 方法 freeDirectBuffer sun.misc 71 静态初始化程序 sun.misc 44 静态初始化程序 sun.misc 45 静态初始化程序 sun.misc 57 io/netty/util/internal/ConcurrentCircularArrayQueue.class 方法 lpElement sun.misc 161 方法 lvElement sun.misc 183 方法 soElement sun.misc 139 方法 spElement sun.misc 118 静态初始化程序 sun.misc 56 静态初始化程序 sun.misc 68 io/netty/util/internal/MpscArrayQueueConsumerField.class 方法 soConsumerIndex sun.misc 328 静态初始化程序 sun.misc 311 io/netty/util/internal/MpscArrayQueueTailField.class 方法 casProducerIndex sun.misc 269 静态初始化程序 sun.misc 252 io/netty/util/internal/PlatformDependent0.class 字段 UNSAFE sun.misc 方法 addressSize sun.misc 326 方法 allocateMemory sun.misc 330 方法 arrayBaseOffset sun.misc 158 方法 copyMemory sun.misc 253 方法 copyMemory sun.misc 264 方法 freeMemory sun.misc 334 方法 getByte sun.misc 182 方法 getByte sun.misc 198 方法 getInt sun.misc 170 方法 getInt sun.misc 190 方法 getInt sun.misc 206 方法 getLong sun.misc 174 方法 getLong sun.misc 194 方法 getLong sun.misc 210 方法 getObject sun.misc 162 方法 getObjectVolatile sun.misc 166 方法 getShort sun.misc 186 方法 getShort sun.misc 202 方法 hasUnsafe sun.misc 139 方法 newAtomicIntegerFieldUpdater sun.misc 278 方法 newAtomicLongFieldUpdater sun.misc 283 方法 newAtomicReferenceFieldUpdater sun.misc 273 方法 objectFieldOffset sun.misc 178 方法 putByte sun.misc 218 方法 putByte sun.misc 234 方法 putInt sun.misc 226 方法 putInt sun.misc 242 方法 putLong sun.misc 230 方法 putLong sun.misc 246 方法 putOrderedObject sun.misc 214 方法 putShort sun.misc 222 方法 putShort sun.misc 238 方法 throwException sun.misc 144 静态初始化程序 sun.misc 76 静态初始化程序 sun.misc 78 静态初始化程序 sun.misc 107 静态初始化程序 sun.misc 132 io/netty/util/internal/UnsafeAtomicIntegerFieldUpdater.class 字段 unsafe sun.misc 方法 compareAndSet sun.misc 39 方法 get sun.misc 59 方法 lazySet sun.misc 54 方法 set sun.misc 49 方法 weakCompareAndSet sun.misc 44 构造函数 sun.misc 构造函数 sun.misc 33 构造函数 sun.misc 34 io/netty/util/internal/UnsafeAtomicLongFieldUpdater.class 字段 unsafe sun.misc 方法 compareAndSet sun.misc 39 方法 get sun.misc 59 方法 lazySet sun.misc 54 方法 set sun.misc 49 方法 weakCompareAndSet sun.misc 44 构造函数 sun.misc 构造函数 sun.misc 33 构造函数 sun.misc 34 io/netty/util/internal/UnsafeAtomicReferenceFieldUpdater.class 字段 unsafe sun.misc 方法 compareAndSet sun.misc 39 方法 get sun.misc 60 方法 lazySet sun.misc 54 方法 set sun.misc 49 方法 weakCompareAndSet sun.misc 44 构造函数 sun.misc 构造函数 sun.misc 33 构造函数 sun.misc 34 io/netty/util/internal/chmv8/ConcurrentHashMapV8$1.class 方法 run sun.misc 6189 方法 run sun.misc 6191 方法 run sun.misc 6196 方法 run - 局部变量特征符 sun.misc 6198 方法 run - 方法返回类型 sun.misc 类特征符 sun.misc io/netty/util/internal/chmv8/ConcurrentHashMapV8$TreeBin.class 字段 U sun.misc 方法 contendedLock sun.misc 2673 方法 contendedLock sun.misc 2680 方法 find sun.misc 2704 方法 find sun.misc 2713 方法 lockRoot sun.misc 2655 静态初始化程序 sun.misc 3103 静态初始化程序 sun.misc 3105 io/netty/util/internal/chmv8/ConcurrentHashMapV8.class 字段 U sun.misc 方法 access$000 sun.misc 238 方法 access$000 - 方法返回类型 sun.misc 方法 addCount sun.misc 2240 方法 addCount sun.misc 2245 方法 addCount sun.misc 2265 方法 addCount sun.misc 2268 方法 casTabAt sun.misc 754 方法 fullAddCount sun.misc 6067 方法 fullAddCount sun.misc 6090 方法 fullAddCount sun.misc 6096 方法 fullAddCount sun.misc 6115 方法 fullAddCount sun.misc 6131 方法 getUnsafe sun.misc 6185 方法 getUnsafe sun.misc 6188 方法 getUnsafe - 方法返回类型 sun.misc 方法 helpTransfer sun.misc 2282 方法 initTable sun.misc 2210 方法 setTabAt sun.misc 758 方法 tabAt sun.misc 749 方法 transfer sun.misc 2352 方法 transfer sun.misc 2368 方法 transfer sun.misc 2385 方法 treeifyBin sun.misc 2488 方法 tryPresize sun.misc 2304 方法 tryPresize sun.misc 2319 静态初始化程序 sun.misc 6150 静态初始化程序 sun.misc 6152 静态初始化程序 sun.misc 6154 静态初始化程序 sun.misc 6156 静态初始化程序 sun.misc 6158 静态初始化程序 sun.misc 6160 静态初始化程序 sun.misc 6163 静态初始化程序 sun.misc 6166 静态初始化程序 sun.misc 6167 io/netty/util/internal/chmv8/CountedCompleter$1.class 方法 run sun.misc 753 方法 run sun.misc 755 方法 run sun.misc 760 方法 run - 局部变量特征符 sun.misc 762 方法 run - 方法返回类型 sun.misc 类特征符 sun.misc io/netty/util/internal/chmv8/CountedCompleter.class 字段 U sun.misc 方法 addToPendingCount sun.misc 517 方法 compareAndSetPendingCount sun.misc 529 方法 decrementPendingCountUnlessZero sun.misc 540 方法 firstComplete sun.misc 643 方法 getUnsafe sun.misc 749 方法 getUnsafe sun.misc 752 方法 getUnsafe - 方法返回类型 sun.misc 方法 propagateCompletion sun.misc 597 方法 tryComplete sun.misc 574 静态初始化程序 sun.misc 732 静态初始化程序 sun.misc 733 io/netty/util/internal/chmv8/ForkJoinPool$2.class 方法 run sun.misc 3343 方法 run sun.misc 3345 方法 run sun.misc 3350 方法 run - 局部变量特征符 sun.misc 3352 方法 run - 方法返回类型 sun.misc 类特征符 sun.misc io/netty/util/internal/chmv8/ForkJoinPool$WorkQueue.class 字段 U sun.misc 方法 externalPopAndExecCC sun.misc 988 方法 externalPopAndExecCC sun.misc 991 方法 externalPopAndExecCC sun.misc 992 方法 growArray sun.misc 747 方法 growArray sun.misc 748 方法 growArray sun.misc 750 方法 internalPopAndExecCC sun.misc 1018 方法 internalPopAndExecCC sun.misc 1021 方法 isEmpty sun.misc 700 方法 peek sun.misc 833 方法 poll sun.misc 801 方法 poll sun.misc 803 方法 poll sun.misc 804 方法 pollAndExecCC sun.misc 960 方法 pollAndExecCC sun.misc 965 方法 pollAndExecCC sun.misc 967 方法 pollAt sun.misc 785 方法 pollAt sun.misc 787 方法 pop sun.misc 765 方法 pop sun.misc 767 方法 push sun.misc 720 方法 runTask sun.misc 888 方法 runTask sun.misc 891 方法 tryRemoveAndExec sun.misc 916 方法 tryRemoveAndExec sun.misc 921 方法 tryRemoveAndExec sun.misc 927 方法 tryRemoveAndExec sun.misc 934 方法 tryUnpush sun.misc 842 静态初始化程序 sun.misc 1055 静态初始化程序 sun.misc 1058 静态初始化程序 sun.misc 1060 静态初始化程序 sun.misc 1062 静态初始化程序 sun.misc 1063 io/netty/util/internal/chmv8/ForkJoinPool.class 字段 U sun.misc 方法 access$000 sun.misc 150 方法 access$000 - 方法返回类型 sun.misc 方法 acquirePlock sun.misc 1277 方法 acquirePlock sun.misc 1284 方法 awaitJoin sun.misc 2035 方法 awaitWork sun.misc 1755 方法 awaitWork sun.misc 1772 方法 awaitWork sun.misc 1775 方法 awaitWork sun.misc 1777 方法 awaitWork sun.misc 1778 方法 deregisterWorker sun.misc 1407 方法 deregisterWorker sun.misc 1410 方法 deregisterWorker sun.misc 1420 方法 deregisterWorker sun.misc 1426 方法 deregisterWorker sun.misc 1444 方法 deregisterWorker sun.misc 1447 方法 externalPush sun.misc 1499 方法 externalPush sun.misc 1505 方法 fullExternalPush sun.misc 1539 方法 fullExternalPush sun.misc 1559 方法 fullExternalPush sun.misc 1565 方法 fullExternalPush sun.misc 1569 方法 fullExternalPush sun.misc 1577 方法 fullExternalPush sun.misc 1594 方法 fullExternalPush sun.misc 1600 方法 getUnsafe sun.misc 3339 方法 getUnsafe sun.misc 3342 方法 getUnsafe - 方法返回类型 sun.misc 方法 helpQuiescePool sun.misc 2108 方法 helpQuiescePool sun.misc 2122 方法 helpQuiescePool sun.misc 2125 方法 helpRelease sun.misc 1803 方法 helpRelease sun.misc 1808 方法 incrementActiveCount sun.misc 1615 方法 registerWorker sun.misc 1359 方法 registerWorker sun.misc 1362 方法 registerWorker sun.misc 1386 方法 scan sun.misc 1697 方法 scan sun.misc 1701 方法 scan sun.misc 1703 方法 scan sun.misc 1718 方法 signalWork sun.misc 1642 方法 signalWork sun.misc 1646 方法 tryAddWorker sun.misc 1322 方法 tryCompensate sun.misc 1963 方法 tryCompensate sun.misc 1967 方法 tryCompensate sun.misc 1974 方法 tryCompensate sun.misc 1979 方法 tryExternalUnpush sun.misc 2337 方法 tryExternalUnpush sun.misc 2339 方法 tryHelpStealer sun.misc 1866 方法 tryHelpStealer sun.misc 1875 方法 tryHelpStealer sun.misc 1876 方法 tryTerminate sun.misc 2234 方法 tryTerminate sun.misc 2238 方法 tryTerminate sun.misc 2265 方法 tryTerminate sun.misc 2282 方法 tryTerminate sun.misc 2295 方法 tryTerminate sun.misc 2300 静态初始化程序 sun.misc 3254 静态初始化程序 sun.misc 3256 静态初始化程序 sun.misc 3258 静态初始化程序 sun.misc 3260 静态初始化程序 sun.misc 3262 静态初始化程序 sun.misc 3265 静态初始化程序 sun.misc 3268 静态初始化程序 sun.misc 3270 静态初始化程序 sun.misc 3273 静态初始化程序 sun.misc 3274 io/netty/util/internal/chmv8/ForkJoinTask$1.class 方法 run sun.misc 1544 方法 run sun.misc 1546 方法 run sun.misc 1551 方法 run - 局部变量特征符 sun.misc 1553 方法 run - 方法返回类型 sun.misc 类特征符 sun.misc io/netty/util/internal/chmv8/ForkJoinTask.class 字段 U sun.misc 方法 compareAndSetForkJoinTaskTag sun.misc 1357 方法 externalAwaitDone sun.misc 319 方法 externalInterruptibleAwaitDone sun.misc 355 方法 get sun.misc 1043 方法 getUnsafe sun.misc 1540 方法 getUnsafe sun.misc 1543 方法 getUnsafe - 方法返回类型 sun.misc 方法 setCompletion sun.misc 261 方法 setForkJoinTaskTag sun.misc 1333 方法 trySetSignal sun.misc 299 静态初始化程序 sun.misc 1522 静态初始化程序 sun.misc 1524 io/netty/util/internal/chmv8/Striped64$1.class 方法 run sun.misc 335 方法 run sun.misc 337 方法 run sun.misc 342 方法 run - 局部变量特征符 sun.misc 344 方法 run - 方法返回类型 sun.misc 类特征符 sun.misc io/netty/util/internal/chmv8/Striped64$Cell.class 字段 UNSAFE sun.misc 方法 cas sun.misc 112 静态初始化程序 sun.misc 120 静态初始化程序 sun.misc 122 io/netty/util/internal/chmv8/Striped64.class 字段 UNSAFE sun.misc 方法 access$000 sun.misc 33 方法 access$000 - 方法返回类型 sun.misc 方法 casBase sun.misc 173 方法 casBusy sun.misc 180 方法 getUnsafe sun.misc 331 方法 getUnsafe sun.misc 334 方法 getUnsafe - 方法返回类型 sun.misc 静态初始化程序 sun.misc 311 静态初始化程序 sun.misc 313 静态初始化程序 sun.misc 315 ROOT.war/WEB-INF/lib/rocketmq-client-3.5.9.jar com/alibaba/rocketmq/shade/io/netty/handler/ssl/util/OpenJdkSelfSignedCertGenerator.class 方法 generate sun.security.util 66 方法 generate sun.security.x509 50 方法 generate sun.security.x509 51 方法 generate sun.security.x509 52 方法 generate sun.security.x509 53 方法 generate sun.security.x509 55 方法 generate sun.security.x509 57 方法 generate sun.security.x509 60 方法 generate sun.security.x509 62 方法 generate sun.security.x509 64 方法 generate sun.security.x509 65 方法 generate sun.security.x509 66 方法 generate sun.security.x509 70 方法 generate sun.security.x509 71 方法 generate sun.security.x509 74 方法 generate sun.security.x509 75 方法 generate sun.security.x509 76 方法 generate sun.security.x509 77 方法 generate sun.security.x509 79 com/alibaba/rocketmq/shade/io/netty/util/internal/Cleaner0.class 方法 freeDirectBuffer sun.misc 64 方法 freeDirectBuffer sun.misc 66 方法 freeDirectBuffer sun.misc 71 静态初始化程序 sun.misc 44 静态初始化程序 sun.misc 45 静态初始化程序 sun.misc 57 com/alibaba/rocketmq/shade/io/netty/util/internal/ConcurrentCircularArrayQueue.class 方法 lpElement sun.misc 161 方法 lvElement sun.misc 183 方法 soElement sun.misc 139 方法 spElement sun.misc 118 静态初始化程序 sun.misc 56 静态初始化程序 sun.misc 68 com/alibaba/rocketmq/shade/io/netty/util/internal/MpscArrayQueueConsumerField.class 方法 soConsumerIndex sun.misc 328 静态初始化程序 sun.misc 311 com/alibaba/rocketmq/shade/io/netty/util/internal/MpscArrayQueueTailField.class 方法 casProducerIndex sun.misc 269 静态初始化程序 sun.misc 252 com/alibaba/rocketmq/shade/io/netty/util/internal/PlatformDependent0.class 字段 UNSAFE sun.misc 方法 addressSize sun.misc 326 方法 allocateMemory sun.misc 330 方法 arrayBaseOffset sun.misc 158 方法 copyMemory sun.misc 253 方法 copyMemory sun.misc 264 方法 freeMemory sun.misc 334 方法 getByte sun.misc 182 方法 getByte sun.misc 198 方法 getInt sun.misc 170 方法 getInt sun.misc 190 方法 getInt sun.misc 206 方法 getLong sun.misc 174 方法 getLong sun.misc 194 方法 getLong sun.misc 210 方法 getObject sun.misc 162 方法 getObjectVolatile sun.misc 166 方法 getShort sun.misc 186 方法 getShort sun.misc 202 方法 hasUnsafe sun.misc 139 方法 newAtomicIntegerFieldUpdater sun.misc 278 方法 newAtomicLongFieldUpdater sun.misc 283 方法 newAtomicReferenceFieldUpdater sun.misc 273 方法 objectFieldOffset sun.misc 178 方法 putByte sun.misc 218 方法 putByte sun.misc 234 方法 putInt sun.misc 226 方法 putInt sun.misc 242 方法 putLong sun.misc 230 方法 putLong sun.misc 246 方法 putOrderedObject sun.misc 214 方法 putShort sun.misc 222 方法 putShort sun.misc 238 方法 throwException sun.misc 144 静态初始化程序 sun.misc 76 静态初始化程序 sun.misc 78 静态初始化程序 sun.misc 107 静态初始化程序 sun.misc 132 com/alibaba/rocketmq/shade/io/netty/util/internal/UnsafeAtomicIntegerFieldUpdater.class 字段 unsafe sun.misc 方法 compareAndSet sun.misc 40 方法 get sun.misc 60 方法 lazySet sun.misc 55 方法 set sun.misc 50 方法 weakCompareAndSet sun.misc 45 构造函数 sun.misc 构造函数 sun.misc 34 构造函数 sun.misc 35 com/alibaba/rocketmq/shade/io/netty/util/internal/UnsafeAtomicLongFieldUpdater.class 字段 unsafe sun.misc 方法 compareAndSet sun.misc 40 方法 get sun.misc 60 方法 lazySet sun.misc 55 方法 set sun.misc 50 方法 weakCompareAndSet sun.misc 45 构造函数 sun.misc 构造函数 sun.misc 34 构造函数 sun.misc 35 com/alibaba/rocketmq/shade/io/netty/util/internal/UnsafeAtomicReferenceFieldUpdater.class 字段 unsafe sun.misc 方法 compareAndSet sun.misc 40 方法 get sun.misc 61 方法 lazySet sun.misc 55 方法 set sun.misc 50 方法 weakCompareAndSet sun.misc 45 构造函数 sun.misc 构造函数 sun.misc 34 构造函数 sun.misc 35 com/alibaba/rocketmq/shade/io/netty/util/internal/chmv8/ConcurrentHashMapV8$1.class 方法 run sun.misc 6189 方法 run sun.misc 6191 方法 run sun.misc 6196 方法 run - 局部变量特征符 sun.misc 6198 方法 run - 方法返回类型 sun.misc 类特征符 sun.misc com/alibaba/rocketmq/shade/io/netty/util/internal/chmv8/ConcurrentHashMapV8$TreeBin.class 字段 U sun.misc 方法 contendedLock sun.misc 2673 方法 contendedLock sun.misc 2680 方法 find sun.misc 2704 方法 find sun.misc 2713 方法 lockRoot sun.misc 2655 静态初始化程序 sun.misc 3103 静态初始化程序 sun.misc 3105 com/alibaba/rocketmq/shade/io/netty/util/internal/chmv8/ConcurrentHashMapV8.class 字段 U sun.misc 方法 access$000 sun.misc 238 方法 access$000 - 方法返回类型 sun.misc 方法 addCount sun.misc 2240 方法 addCount sun.misc 2245 方法 addCount sun.misc 2265 方法 addCount sun.misc 2268 方法 casTabAt sun.misc 754 方法 fullAddCount sun.misc 6067 方法 fullAddCount sun.misc 6090 方法 fullAddCount sun.misc 6096 方法 fullAddCount sun.misc 6115 方法 fullAddCount sun.misc 6131 方法 getUnsafe sun.misc 6185 方法 getUnsafe sun.misc 6188 方法 getUnsafe - 方法返回类型 sun.misc 方法 helpTransfer sun.misc 2282 方法 initTable sun.misc 2210 方法 setTabAt sun.misc 758 方法 tabAt sun.misc 749 方法 transfer sun.misc 2352 方法 transfer sun.misc 2368 方法 transfer sun.misc 2385 方法 treeifyBin sun.misc 2488 方法 tryPresize sun.misc 2304 方法 tryPresize sun.misc 2319 静态初始化程序 sun.misc 6150 静态初始化程序 sun.misc 6152 静态初始化程序 sun.misc 6154 静态初始化程序 sun.misc 6156 静态初始化程序 sun.misc 6158 静态初始化程序 sun.misc 6160 静态初始化程序 sun.misc 6163 静态初始化程序 sun.misc 6166 静态初始化程序 sun.misc 6167 com/alibaba/rocketmq/shade/io/netty/util/internal/chmv8/CountedCompleter$1.class 方法 run sun.misc 753 方法 run sun.misc 755 方法 run sun.misc 760 方法 run - 局部变量特征符 sun.misc 762 方法 run - 方法返回类型 sun.misc 类特征符 sun.misc com/alibaba/rocketmq/shade/io/netty/util/internal/chmv8/CountedCompleter.class 字段 U sun.misc 方法 addToPendingCount sun.misc 517 方法 compareAndSetPendingCount sun.misc 529 方法 decrementPendingCountUnlessZero sun.misc 540 方法 firstComplete sun.misc 643 方法 getUnsafe sun.misc 749 方法 getUnsafe sun.misc 752 方法 getUnsafe - 方法返回类型 sun.misc 方法 propagateCompletion sun.misc 597 方法 tryComplete sun.misc 574 静态初始化程序 sun.misc 732 静态初始化程序 sun.misc 733 com/alibaba/rocketmq/shade/io/netty/util/internal/chmv8/ForkJoinPool$2.class 方法 run sun.misc 3343 方法 run sun.misc 3345 方法 run sun.misc 3350 方法 run - 局部变量特征符 sun.misc 3352 方法 run - 方法返回类型 sun.misc 类特征符 sun.misc com/alibaba/rocketmq/shade/io/netty/util/internal/chmv8/ForkJoinPool$WorkQueue.class 字段 U sun.misc 方法 externalPopAndExecCC sun.misc 988 方法 externalPopAndExecCC sun.misc 991 方法 externalPopAndExecCC sun.misc 992 方法 growArray sun.misc 747 方法 growArray sun.misc 748 方法 growArray sun.misc 750 方法 internalPopAndExecCC sun.misc 1018 方法 internalPopAndExecCC sun.misc 1021 方法 isEmpty sun.misc 700 方法 peek sun.misc 833 方法 poll sun.misc 801 方法 poll sun.misc 803 方法 poll sun.misc 804 方法 pollAndExecCC sun.misc 960 方法 pollAndExecCC sun.misc 965 方法 pollAndExecCC sun.misc 967 方法 pollAt sun.misc 785 方法 pollAt sun.misc 787 方法 pop sun.misc 765 方法 pop sun.misc 767 方法 push sun.misc 720 方法 runTask sun.misc 888 方法 runTask sun.misc 891 方法 tryRemoveAndExec sun.misc 916 方法 tryRemoveAndExec sun.misc 921 方法 tryRemoveAndExec sun.misc 927 方法 tryRemoveAndExec sun.misc 934 方法 tryUnpush sun.misc 842 静态初始化程序 sun.misc 1055 静态初始化程序 sun.misc 1058 静态初始化程序 sun.misc 1060 静态初始化程序 sun.misc 1062 静态初始化程序 sun.misc 1063 com/alibaba/rocketmq/shade/io/netty/util/internal/chmv8/ForkJoinPool.class 字段 U sun.misc 方法 access$000 sun.misc 150 方法 access$000 - 方法返回类型 sun.misc 方法 acquirePlock sun.misc 1277 方法 acquirePlock sun.misc 1284 方法 awaitJoin sun.misc 2035 方法 awaitWork sun.misc 1755 方法 awaitWork sun.misc 1772 方法 awaitWork sun.misc 1775 方法 awaitWork sun.misc 1777 方法 awaitWork sun.misc 1778 方法 deregisterWorker sun.misc 1407 方法 deregisterWorker sun.misc 1410 方法 deregisterWorker sun.misc 1420 方法 deregisterWorker sun.misc 1426 方法 deregisterWorker sun.misc 1444 方法 deregisterWorker sun.misc 1447 方法 externalPush sun.misc 1499 方法 externalPush sun.misc 1505 方法 fullExternalPush sun.misc 1539 方法 fullExternalPush sun.misc 1559 方法 fullExternalPush sun.misc 1565 方法 fullExternalPush sun.misc 1569 方法 fullExternalPush sun.misc 1577 方法 fullExternalPush sun.misc 1594 方法 fullExternalPush sun.misc 1600 方法 getUnsafe sun.misc 3339 方法 getUnsafe sun.misc 3342 方法 getUnsafe - 方法返回类型 sun.misc 方法 helpQuiescePool sun.misc 2108 方法 helpQuiescePool sun.misc 2122 方法 helpQuiescePool sun.misc 2125 方法 helpRelease sun.misc 1803 方法 helpRelease sun.misc 1808 方法 incrementActiveCount sun.misc 1615 方法 registerWorker sun.misc 1359 方法 registerWorker sun.misc 1362 方法 registerWorker sun.misc 1386 方法 scan sun.misc 1697 方法 scan sun.misc 1701 方法 scan sun.misc 1703 方法 scan sun.misc 1718 方法 signalWork sun.misc 1642 方法 signalWork sun.misc 1646 方法 tryAddWorker sun.misc 1322 方法 tryCompensate sun.misc 1963 方法 tryCompensate sun.misc 1967 方法 tryCompensate sun.misc 1974 方法 tryCompensate sun.misc 1979 方法 tryExternalUnpush sun.misc 2337 方法 tryExternalUnpush sun.misc 2339 方法 tryHelpStealer sun.misc 1866 方法 tryHelpStealer sun.misc 1875 方法 tryHelpStealer sun.misc 1876 方法 tryTerminate sun.misc 2234 方法 tryTerminate sun.misc 2238 方法 tryTerminate sun.misc 2265 方法 tryTerminate sun.misc 2282 方法 tryTerminate sun.misc 2295 方法 tryTerminate sun.misc 2300 静态初始化程序 sun.misc 3254 静态初始化程序 sun.misc 3256 静态初始化程序 sun.misc 3258 静态初始化程序 sun.misc 3260 静态初始化程序 sun.misc 3262 静态初始化程序 sun.misc 3265 静态初始化程序 sun.misc 3268 静态初始化程序 sun.misc 3270 静态初始化程序 sun.misc 3273 静态初始化程序 sun.misc 3274 com/alibaba/rocketmq/shade/io/netty/util/internal/chmv8/ForkJoinTask$1.class 方法 run sun.misc 1544 方法 run sun.misc 1546 方法 run sun.misc 1551 方法 run - 局部变量特征符 sun.misc 1553 方法 run - 方法返回类型 sun.misc 类特征符 sun.misc com/alibaba/rocketmq/shade/io/netty/util/internal/chmv8/ForkJoinTask.class 字段 U sun.misc 方法 compareAndSetForkJoinTaskTag sun.misc 1357 方法 externalAwaitDone sun.misc 319 方法 externalInterruptibleAwaitDone sun.misc 355 方法 get sun.misc 1043 方法 getUnsafe sun.misc 1540 方法 getUnsafe sun.misc 1543 方法 getUnsafe - 方法返回类型 sun.misc 方法 setCompletion sun.misc 261 方法 setForkJoinTaskTag sun.misc 1333 方法 trySetSignal sun.misc 299 静态初始化程序 sun.misc 1522 静态初始化程序 sun.misc 1524 com/alibaba/rocketmq/shade/io/netty/util/internal/chmv8/Striped64$1.class 方法 run sun.misc 335 方法 run sun.misc 337 方法 run sun.misc 342 方法 run - 局部变量特征符 sun.misc 344 方法 run - 方法返回类型 sun.misc 类特征符 sun.misc com/alibaba/rocketmq/shade/io/netty/util/internal/chmv8/Striped64$Cell.class 字段 UNSAFE sun.misc 方法 cas sun.misc 112 静态初始化程序 sun.misc 120 静态初始化程序 sun.misc 122 com/alibaba/rocketmq/shade/io/netty/util/internal/chmv8/Striped64.class 字段 UNSAFE sun.misc 方法 access$000 sun.misc 33 方法 access$000 - 方法返回类型 sun.misc 方法 casBase sun.misc 173 方法 casBusy sun.misc 180 方法 getUnsafe sun.misc 331 方法 getUnsafe sun.misc 334 方法 getUnsafe - 方法返回类型 sun.misc 静态初始化程序 sun.misc 311 静态初始化程序 sun.misc 313 静态初始化程序 sun.misc 315
警告规则
Java SE 版本迁移 / Java SE 11 兼容性影响
-
规则帮助
在 JDK 11 中已移除了
java.transaction
模块。如果 Libertyserver.xml
配置文件包含以下任何 jdbc 功能部件,那么无需进一步操作:jdbc-4.0
jdbc-4.1
jdbc-4.2
jdbc-4.3
此规则将标记在迁移到 JDK 11 或更高版本时可能需要进行其他配置的包。在 JDK 11 之前,应用程序可访问 JDK 中的
javax.transaction
包。从 JDK 11 开始,JDK 中不再提供此包。应用程序可通过将先前列出的任何 jdbc Liberty 功能部件添加到 server.xml 配置文件以在 Liberty 中访问此包。JDBC 功能部件版本基于其他 Liberty 功能部件的 Java EE 级别。有关 Liberty 功能部件的更多信息,请参阅“Liberty 功能部件”文档页面 Liberty features此规则将为每个应用程序标记一次。在将 jdbc 功能部件添加到
server.xml
文件后,无需进一步操作。有关 JDK 11 更改的更多信息,请参阅 Removal of Java EE and CORBA Modules。
结果
文件名 引用详细信息 匹配条件 行号 ROOT.war/WEB-INF/lib/rent-core-service-2.6.0.jar com/isesol/rent/platform/service/TRentMessageSendService.class 类注释 javax.transaction -
规则帮助
在 JDK 11 中已移除了
java.xml.bind
和java.activation
模块。如果 Libertyserver.xml
配置文件包含jaxb-2.2
功能部件,那么无需进一步操作。此规则将标记在迁移到 JDK 11 或更高版本时可能需要进行其他配置的包。在 JDK 11 之前,应用程序可访问 JDK 中的以下包:
javax.activation
javax.xml.bind
javax.xml.bind.annotation
javax.xml.bind.annotation.adapters
javax.xml.bind.attachment
javax.xml.bind.helpers
javax.xml.bind.util
从 JDK 11 开始,JDK 中不再提供这些包。应用程序可通过将
jaxb-2.2
Liberty 功能部件添加到 server.xml 配置文件以在 Liberty 中访问这些包。此规则将为每个应用程序标记一次。在将
jaxb-2.2
功能部件添加到server.xml
文件后,无需进一步操作。除了从 JDK 中移除了
java.xml.bind
模块外,还从 JDK 11 中移除了schemagen
和xjc
工具。在 Liberty 安装的 Libertybin/jaxb
目录中提供了这些工具。有关 JDK 11 更改的更多信息,请参阅 Removal of Java EE and CORBA Modules。
结果
文件名 引用详细信息 匹配条件 行号 ROOT.war/WEB-INF/lib/dubbo-2.6.0.jar com/alibaba/dubbo/rpc/protocol/rest/RestConstraintViolation.class 类注释 javax.xml.bind.annotation -
规则帮助
在 Java 11 中,Unicode 联合会的通用语言环境数据存储库 (CLDR) 作为缺省语言环境数据启用。在先前的发行版中,缺省值为 JRE(现在称为 COMPAT)。使用语言环境敏感性服务(如日期、时间和数字格式)的代码可能会使用 CLDR 语言环境数据生成不同的结果。
该规则用于标记对以下语言环境敏感性类的引用:
java.text.ChoiceFormat
java.text.DateFormat
java.text.DecimalFormat
java.text.Format
java.text.MessageFormat
java.text.NumberFormat
java.text.SimpleDateFormat
要启用与 Java 8 兼容的行为,请将系统属性
java.locale.providers
设置为COMPAT
后跟CLDR
这样一个值,如下所示:java.locale.providers=COMPAT,CLDR
有关更多信息,请参阅 Use CLDR Locale Data by Default 和 CLDR Locale Data Enabled by Default 文档。
结果
文件名 引用详细信息 匹配条件 行号 ROOT.war/WEB-INF/lib/cat-client-2.0.0.jar com/dianping/cat/Cat.class 方法 log java.text.MessageFormat 147 ROOT.war/WEB-INF/lib/druid-1.1.8.jar com/alibaba/druid/pool/DruidDataSource.class 方法 getConnectionInternal java.text.SimpleDateFormat 1421 ROOT.war/WEB-INF/lib/dubbo-2.6.0.jar com/alibaba/dubbo/common/json/GenericJSONConverter$34.class 方法 decode java.text.SimpleDateFormat 316 ROOT.war/WEB-INF/lib/fastjson-1.2.30.jar com/alibaba/fastjson/parser/DefaultJSONParser.class 字段 dateFormat java.text.DateFormat ROOT.war/WEB-INF/lib/gson-2.8.1.jar com/google/gson/DefaultDateTypeAdapter.class 字段 enUsFormat java.text.DateFormat ROOT.war/WEB-INF/lib/i5portal-framework-commons-0.0.3-SNAPSHOT.jar com/i5portal/commons/utils/TimeUtil.class 方法 formatDate java.text.SimpleDateFormat 30 ROOT.war/WEB-INF/lib/iSESOL-platform-cat-1.0.0-SNAPSHOT.jar com/isesol/platform/cat/interceptor/mybatis/CatMybatisPlugins.class 方法 getParameterValue java.text.DateFormat 99 ROOT.war/WEB-INF/lib/isesol-common-1.0.3-SNAPSHOT.jar com/isesol/arch/common/utils/DateUtil.class 方法 format java.text.SimpleDateFormat 111 ROOT.war/WEB-INF/lib/jackson-databind-2.8.7.jar com/fasterxml/jackson/databind/DeserializationConfig.class 方法 with java.text.DateFormat 28 ROOT.war/WEB-INF/lib/je-5.0.73.jar com/sleepycat/je/dbi/DatabaseImpl$StatsAccumulator$1.class 方法 getFormattedValue java.text.DecimalFormat 2086 ROOT.war/WEB-INF/lib/jline-0.9.94.jar jline/CandidateListCompletionHandler.class 方法 printCandidates java.text.MessageFormat 98 ROOT.war/WEB-INF/lib/lts-core-1.6.9.jar com/github/ltsopensource/core/commons/time/FastDateFormat$1.class 方法 createInstance - 方法返回类型 java.text.Format ROOT.war/WEB-INF/lib/mysql-connector-java-5.1.38.jar com/mysql/jdbc/EscapeProcessor.class 方法 processTimestampToken java.text.SimpleDateFormat 383 ROOT.war/WEB-INF/lib/netty-all-4.0.33.Final.jar io/netty/handler/codec/http/HttpHeaderDateFormat$HttpHeaderDateFormatObsolete1.class 构造函数 java.text.SimpleDateFormat 83 ROOT.war/WEB-INF/lib/rent-core-2.6.0.jar com/isesol/rent/platform/utils/BillDateUtils.class 方法 TimeStamp2Date java.text.SimpleDateFormat 301 ROOT.war/WEB-INF/lib/rent-core-service-2.6.0.jar com/isesol/rent/platform/job/JobCompletedHandlerImpl.class 方法 onComplete java.text.SimpleDateFormat 30 ROOT.war/WEB-INF/lib/rent-rest-2.6.0.jar com/isesol/rent/platform/rest/PublicAuthorityResource.class 方法 getAuthorityI5OS java.text.SimpleDateFormat 57 ROOT.war/WEB-INF/lib/rocketmq-client-3.5.9.jar com/alibaba/rocketmq/common/UtilAll.class 方法 formatDate java.text.SimpleDateFormat 352 ROOT.war/WEB-INF/lib/vdp-api-1.2.1-SNAPSHOT.jar com/isesol/vdp/api/IVdpEquipmentStatus.class 方法 dailyStatistics java.text.SimpleDateFormat 355 ROOT.war/WEB-INF/lib/vdp-commons-1.2.1-SNAPSHOT.jar com/isesol/vdp/api/utils/DateUtils.class 字段 longHourSdf java.text.SimpleDateFormat
参考规则
Java SE 版本迁移 / Java SE 11 兼容性影响
-
规则帮助
在 Java 11 之前,
java.nio.channels.SelectableChannel
类和java.nio.channels.Selector
键集不是线程安全的。已更新了规范,现在可通过并发线程来安全使用这些 API。如果在执行选择操作时注册了新通道,那么在执行下一个选择操作之前,该通道不会生效。此更改不会影响在java.nio.channels.Selector
所选键集上同步的代码,但是可以更改代码以使用新的线程安全 API。有关
java.nio.channels.Selector
类的其他信息,请参阅 Class java.nio.channels.Selector Java documentation。有关
java.nio.channels.SelectableChannel
类的其他信息,请参阅 Class java.nio.channels.SelectableChannel Java documentation。有关 JDK 11 更改的更多信息,请参阅 Release Notes in JDK 11。
结果
文件名 引用详细信息 匹配条件 行号 ROOT.war/WEB-INF/lib/je-5.0.73.jar com/sleepycat/je/rep/impl/BinaryNodeStateService$NodeStateServiceRunnable.class 方法 run java.nio.channels.SelectableChannel 95 ROOT.war/WEB-INF/lib/lts-core-1.6.9.jar com/github/ltsopensource/nio/channel/NioChannelImpl.class 方法 close java.nio.channels.SelectableChannel 91 ROOT.war/WEB-INF/lib/mybatis-plus-core-3.1.0.jar com/baomidou/mybatisplus/core/toolkit/IOUtils.class 方法 closeQuietly java.nio.channels.Selector 352 ROOT.war/WEB-INF/lib/netty-all-4.0.33.Final.jar io/netty/channel/nio/AbstractNioByteChannel.class 构造函数 java.nio.channels.SelectableChannel 52 ROOT.war/WEB-INF/lib/rocketmq-client-3.5.9.jar com/alibaba/rocketmq/remoting/common/RemotingHelper.class 方法 invokeSync java.nio.channels.SelectableChannel 72 -
规则帮助
在 Java SE 11 之前,在使用包含空元素的数组进行初始化时,
java.net.URLClassLoader
构造函数和URLClassLoader.newInstance()
没有指定的行为。在 Java 11 中,当在数组中检测到空元素时,此行为更改为抛出java.lang.NullPointerException
。可能需要进行更改,以防止出现未捕获的异常。有关
java.net.URLClassLoader
类的其他信息,请参阅 Class java.net.URLClassLoader Java documentation。有关 JDK 11 更改的更多信息,请参阅 Release Notes in JDK 11。
结果
文件名 引用详细信息 匹配条件 行号 ROOT.war/WEB-INF/lib/guava-20.0.jar com/google/common/base/FinalizableReferenceQueue$DecoupledLoader.class 方法 newLoader java.net.URLClassLoader(*) 331 -
规则帮助
在 Java 11 之前,已实现了
java.nio.channels.Selector
API,以在使用java.nio.channels.Selector.selectNow()
或java.nio.channels.Selector.select()
时覆盖先前的准备信息。java.nio.channels.Selector.selectNow()
方法应根据规范清空已取消的键,但是 Java 11 之前的行为并未反映这一点。规范指出,除非调用了
java.nio.channels.Selector.selectNow()
或java.nio.channels.Selector.clear()
来清空已取消的键,否则不应覆盖准备信息,而是应持久存储这些信息。 在 Java 11 中,此行为已更改为遵循规范;如果添加了代码来解决之前的这一错误,那么可能需要进行更改。有关
java.nio.channels.Selector
类的其他信息,请参阅 Class java.nio.channels.Selector Java documentation。有关 JDK 11 更改的更多信息,请参阅 Release Notes in JDK 11。
结果
文件名 引用详细信息 匹配条件 行号 ROOT.war/WEB-INF/lib/je-5.0.73.jar com/sleepycat/je/rep/utilint/ServiceDispatcher.class 方法 run java.nio.channels.Selector.select(*) 633 ROOT.war/WEB-INF/lib/lts-core-1.6.9.jar com/github/ltsopensource/nio/loop/NioSelectorLoop.class 方法 select java.nio.channels.Selector.select(*) 124 方法 select java.nio.channels.Selector.selectNow(*) 118 方法 select java.nio.channels.Selector.selectNow(*) 138 ROOT.war/WEB-INF/lib/netty-all-4.0.33.Final.jar io/netty/channel/nio/NioEventLoop.class 方法 select java.nio.channels.Selector.select(*) 622 方法 select java.nio.channels.Selector.selectNow(*) 616 方法 select java.nio.channels.Selector.selectNow(*) 663 方法 selectAgain java.nio.channels.Selector.selectNow(*) 687 方法 selectNow java.nio.channels.Selector.selectNow(*) 597 io/netty/channel/sctp/oio/OioSctpChannel.class 方法 doConnect java.nio.channels.Selector.select(*) 367 方法 doReadMessages java.nio.channels.Selector.select(*) 180 方法 doWrite java.nio.channels.Selector.select(*) 223 io/netty/channel/sctp/oio/OioSctpServerChannel.class 方法 doReadMessages java.nio.channels.Selector.select(*) 190 ROOT.war/WEB-INF/lib/rocketmq-client-3.5.9.jar com/alibaba/rocketmq/shade/io/netty/channel/nio/NioEventLoop.class 方法 select java.nio.channels.Selector.select(*) 639 方法 select java.nio.channels.Selector.selectNow(*) 633 方法 select java.nio.channels.Selector.selectNow(*) 680 方法 selectAgain java.nio.channels.Selector.selectNow(*) 704 方法 selectNow java.nio.channels.Selector.selectNow(*) 614 com/alibaba/rocketmq/shade/io/netty/channel/sctp/oio/OioSctpChannel.class 方法 doConnect java.nio.channels.Selector.select(*) 376 方法 doReadMessages java.nio.channels.Selector.select(*) 181 方法 doWrite java.nio.channels.Selector.select(*) 232 com/alibaba/rocketmq/shade/io/netty/channel/sctp/oio/OioSctpServerChannel.class 方法 doReadMessages java.nio.channels.Selector.select(*) 191 -
规则帮助
此规则将标记以下类:
java.nio.channels.SocketChannel
java.nio.channels.ServerSocketChannel
java.nio.channels.DatagramChannel
java.nio.channels.Pipe.SourceChannel
java.nio.channels.Pipe.SinkChannel
在 Java 11 之前,在先前列出的类中,非阻止和阻止 I/O 操作使用了相同的代码路径。此实现降低了 I/O 速度和可靠性。这一更改导致了多个行为更改:
java.nio.channels.SocketChannel
和java.nio.channels.ServerSocketChannel
类现在会延迟关闭其底层连接,直至从其注册的选择器中清空关闭通道。如果与 netstat 网络监控功能一起使用,那么您会注意到一个将影响其他库和应用程序选择操作的行为更改。- 在配置了“非阻止”且具有中断状态的可选择通道上调用的 I/O 操作将不会关闭该通道。
- 在可选择通道上调用
configureBlocking(false)
时,它将执行阻止直至完成所有阻止 I/O 操作。
有关更多信息,请参阅:
- java.nio.channels.SocketChannel Javadoc。
- java.nio.channels.ServerSocketChannel Javadoc。
- java.nio.channels.DatagramChannel Javadoc。
- java.nio.channels.Pipe.SourceChannel Javadoc。
- java.nio.channels.Pipe.SinkChannel Javadoc。
有关 Java 11 中的行为更改的更多信息,请参阅 Removed APIs in JDK 11 page。
结果
文件名 引用详细信息 匹配条件 行号 ROOT.war/WEB-INF/lib/je-5.0.73.jar com/sleepycat/je/rep/elections/Acceptor.class 方法 run java.nio.channels.SocketChannel 80 ROOT.war/WEB-INF/lib/lts-core-1.6.9.jar com/github/ltsopensource/nio/NioServer.class 方法 init java.nio.channels.ServerSocketChannel 62 ROOT.war/WEB-INF/lib/netty-all-4.0.33.Final.jar io/netty/channel/socket/nio/NioDatagramChannel.class 方法 doBind java.nio.channels.DatagramChannel 192 ROOT.war/WEB-INF/lib/rocketmq-client-3.5.9.jar com/alibaba/rocketmq/remoting/common/RemotingHelper.class 方法 invokeSync java.nio.channels.SocketChannel 66 -
规则帮助
从 Java 8 开始,JDK 附带了一个名为
jdeps
(Java 类依赖关系分析器)的命令行实用程序。jdeps
命令将分析类依赖关系并提供额外的参数来标记内部 JDK 包。虽然 WebSphere 迁移工具也可以标记在应用程序中找到的大多数迁移问题,但是jdeps
工具可以另外检测在迁移到新的 Java 版本后不再可用的内部 JDK 包。建议在解决了由二进制或源 WebSphere 迁移工具标记的问题后,运行
jdeps
命令作为最后一步。针对应用程序 Java 工件运行jdeps
命令。要最大限度完善结果,请将计划的目标 JDK 安装(例如 JDK 11)中可用的jdeps
命令与-jdkinternals
参数结合使用。例如,在将环境设置为使用 Java 11 后,请运行以下命令:jdeps -jdkinternals C:\demo\Apps\myapplication.jar 该实用程序将生成输出来标识对 JDK 内部类的引用,并尽可能提供建议的替换 API。注:
jdeps
命令仅接受.class
文件、目录或 JAR 文件。有关
jdeps
命令的更多信息,请参阅 the jdeps reference page。结果
文件名 引用详细信息 匹配条件 行号 ROOT.war/WEB-INF/lib/cat-client-2.0.0.jar com/dianping/cat/status/StatusInfoCollector.class 方法 visitOs com.sun.management 211 ROOT.war/WEB-INF/lib/druid-1.1.8.jar com/alibaba/druid/support/console/DruidStat.class 方法 loadManagementAgentAndGetAddress com.sun.tools.attach 126 ROOT.war/WEB-INF/lib/guava-20.0.jar com/google/common/cache/Striped64$1.class 方法 run sun.misc 324 ROOT.war/WEB-INF/lib/javassist-3.20.0-GA.jar javassist/util/HotSwapper$1.class 方法 run com.sun.jdi.event 217 ROOT.war/WEB-INF/lib/lts-core-1.6.9.jar com/github/ltsopensource/jvmmonitor/mbean/JVMThread.class 字段 OperatingSystem com.sun.management ROOT.war/WEB-INF/lib/lts-tasktracker-1.6.9.jar com/github/ltsopensource/tasktracker/runner/JobRunnerDelegate$InterruptibleAdapter.class 类实施 sun.nio.ch ROOT.war/WEB-INF/lib/netty-all-4.0.33.Final.jar io/netty/channel/sctp/DefaultSctpChannelConfig.class 字段 javaChannel com.sun.nio.sctp ROOT.war/WEB-INF/lib/rocketmq-client-3.5.9.jar com/alibaba/rocketmq/shade/io/netty/channel/sctp/DefaultSctpChannelConfig.class 字段 javaChannel com.sun.nio.sctp
-
Java SE 版本迁移
Java SE 11 兼容性影响
文件规则
- 在 JDK 11 中已移除了 Java Web Start 技术
Java 规则
- java.awt.peer 和 java.awt.dnd.peer 包不可访问
- java.lang.invoke.MethodHandles.filterArguments 方法的行为更改
- java.nio.channels.DatagramChannel.send() 方法将抛出 AlreadyConnectedException 而不是 IllegalArgumentException
- java.util.concurrent.ThreadPoolExecutor.finalize() 方法的行为更改
- javax.management.MBeanOperationInfo 构造函数的行为更改
- 可在并发线程中安全使用 java.nio.channels.Selector 和 java.nio.channels.SelectableChannel 类
- 在 JDK 11 中已移除了 JavaFX 模块
- 在 JDK 11 中已移除了 java.transaction 模块
- 在 JDK 11 中已移除了 java.xml.bind 和 java.activation 模块(定制实现)
- 在 JDK 11 中已移除了 java.xml.bind 和 java.activation 模块(缺省实现)
- 带有原始类型的 java.xml API 方法的行为更改
- 当数组包含空元素时,URLClassLoader 构造函数和 newInstance() 调用将抛出 NullPointerException
- 查看 FileInputStream 和 FileOutputStream overridden close 方法的资源清除
- 检查 Pack200.Packer 和 Pack200.Unpacker 接口上的已移除的方法
- 检查 Selector select 和 selectNow 方法是否有行为更改
- 检查是否存在与 com.ibm.security.auth.module.Krb5LoginModule 类相关的配置更改
- 检查是否存在与分离 I/O 通道的阻止和非阻止代码路径相关的行为更改
- 缺省语言环境数据的行为更改
- 请勿使用 com.ibm.security.auth.module.Krb5LoginModule 类
- 请勿使用 com.sun.image.codec.jpeg 包中的 API
- 请勿使用 com.sun.xml.internal.bind.* 包中的 API
- 请勿使用 com.sun.xml.internal.bind.v2.ContextFactory 类
- 请勿使用 getPeer 方法
- 请勿使用 java.lang.ref.Reference clone 方法
- 请勿使用 javax.security.auth.Policy 类
- 请勿使用 netdoc URL 协议
- 请勿使用 sun.* 包中的 API
- 请勿使用从 LogManager 中移除的 addPropertyChangeListener 或 removePropertyChangeListener 方法
- 请勿使用已移除的 Runtime.getLocalizedInputStream 和 Runtime.getLocalizedOutputStream 方法
- 请勿使用已移除的 SecurityManager 方法
- 请勿使用已移除的 com.sun 类
- 请勿使用已移除的 com.sun.java.browser.plugin2.DOM 和 sun.plugin.dom.DOMObject API
- 请勿使用已移除的 com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel 或 apple.laf.AquaLookAndFeel Swing LookAndFeel
- 请勿使用已移除的 java.lang.Thread.destroy() 或 java.lang.Thread.stop(java.lang.Throwable) 方法
- 请勿使用已移除的 javax.crypto.ExemptionMechanism.finalize() 方法
- 请勿使用已移除的 jdk.Exported 注释
- 请勿使用已移除的 runFinalizersOnExit 方法
- 调用 Class.getAnnotation() 方法时出现的异常的行为更改
- 运行 Java 类依赖关系分析器工具 (JDeps)
- 避免使用不推荐的 RMIIIOPServerImpl 类
Java SE 11 兼容性影响(非 Liberty Core)
Java 规则
- 在 JDK 11 中已移除了 java.corba 模块
- 在 JDK 11 中已移除了 java.xml.ws 模块(定制实现)
- 在 JDK 11 中已移除了 java.xml.ws 模块(缺省实现)
-
扫描问题
Java 规则
- 类文件包含未解决的编译问题