详细迁移分析报告

19-11-7 下午4:06

F:/tmp/wamt/ROOT.war

规则严重性摘要

符号 标签 已标记的规则 结果总数 描述
严重 严重规则指示 API 删除或可中断应用程序且必须解决的行为更改。 严重 1 719 严重规则指示 API 删除或可中断应用程序且必须解决的行为更改。
警告 警告规则指示可能中断应用程序且应进行评估的行为更改。 警告 3 22 警告规则指示可能中断应用程序且应进行评估的行为更改。
信息 信息规则指示使用不推荐的 API 或者不会影响大多数应用程序的细微行为更改 信息 5 40 信息规则指示使用不推荐的 API 或者不会影响大多数应用程序的细微行为更改

按规则列出的详细结果

严重规则

Java SE 版本迁移 / Java SE 11 兼容性影响

  • 严重 严重规则指示 API 删除或可中断应用程序且必须解决的行为更改。 请勿使用 sun.* 包中的 API (719)

    规则帮助

    sun.* API 是不受支持的 JDK 内部 API,可能会随时移除。 在 Java SE 11 中已移除了 sun.misc.BASE64Encodersun.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 模块 (1)

    规则帮助

    在 JDK 11 中已移除了 java.transaction 模块。如果 Liberty server.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 模块(缺省实现) (1)

    规则帮助

    在 JDK 11 中已移除了 java.xml.bindjava.activation 模块。如果 Liberty server.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 中移除了 schemagenxjc 工具。在 Liberty 安装的 Liberty bin/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
  • 警告 警告规则指示可能中断应用程序且应进行评估的行为更改。 缺省语言环境数据的行为更改 (20)

    规则帮助

    在 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 兼容性影响

  • 信息 信息规则指示使用不推荐的 API 或者不会影响大多数应用程序的细微行为更改 可在并发线程中安全使用 java.nio.channels.Selector 和 java.nio.channels.SelectableChannel 类 (5)

    规则帮助

    在 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
  • 信息 信息规则指示使用不推荐的 API 或者不会影响大多数应用程序的细微行为更改 当数组包含空元素时,URLClassLoader 构造函数和 newInstance() 调用将抛出 NullPointerException (1)

    规则帮助

    在 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
  • 信息 信息规则指示使用不推荐的 API 或者不会影响大多数应用程序的细微行为更改 检查 Selector select 和 selectNow 方法是否有行为更改 (22)

    规则帮助

    在 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
  • 信息 信息规则指示使用不推荐的 API 或者不会影响大多数应用程序的细微行为更改 检查是否存在与分离 I/O 通道的阻止和非阻止代码路径相关的行为更改 (4)

    规则帮助

    此规则将标记以下类:

    • 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.SocketChanneljava.nio.channels.ServerSocketChannel 类现在会延迟关闭其底层连接,直至从其注册的选择器中清空关闭通道。如果与 netstat 网络监控功能一起使用,那么您会注意到一个将影响其他库和应用程序选择操作的行为更改。
    • 在配置了“非阻止”且具有中断状态的可选择通道上调用的 I/O 操作将不会关闭该通道。
    • 在可选择通道上调用 configureBlocking(false) 时,它将执行阻止直至完成所有阻止 I/O 操作。

    有关更多信息,请参阅:

    有关 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
  • 信息 信息规则指示使用不推荐的 API 或者不会影响大多数应用程序的细微行为更改 运行 Java 类依赖关系分析器工具 (JDeps) (8)

    规则帮助

    从 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