gpt4 book ai didi

java - 如何在 EAR 上运行 `jdeprscan`

转载 作者:行者123 更新时间:2023-11-30 10:01:51 25 4
gpt4 key购买 nike

jdeprscan工具确定列出所有已弃用和不存在的依赖项。它可以在类、目录和 JAR 上运行。

但是如何在 EAR 上运行它呢?

最佳答案

灵感来自 https://stackoverflow.com/a/57217414/698168 ,我使用以下脚本 (Windows) 将 EAR 分解为 JAR:

rem remove previous run
rd /s /q ear

rem extract the EAR
"C:\Program Files\7-Zip\7z" x -oear *.ear

rem extract the WAR
cd ear
"C:\Program Files\7-Zip\7z" x -owar *.war

rem unify JAR from EAR and WAR
copy war\WEB-INF\lib\*.jar lib

rem make JAR with the classes
cd war\WEB-INF\classes
rem "C:\Program Files\7-Zip\7z" a -r my-app.jar
"C:\Program Files\Java\jdk-11\bin\jar" cvf my-app.jar -C . .
rem Note: using 7zip to create the JAR may lead to errors when running jdeprscan, thus we are using the jar command
copy my-app.jar ..\..\..

rem return to origin
cd ..\..\..

rem unpack all libraries...
cd lib
"C:\Program Files\7-Zip\7z" x -aoa -oclasses *.jar

rem .. and repack them as a fat JAR
cd classes
rem "C:\Program Files\7-Zip\7z" a -r 00lib.jar
"C:\Program Files\Java\jdk-11\bin\jar" cvf 00lib.jar -C . .

rem duplicate the fat JAR and make some cleaning
copy 00lib.jar ..\00lib.jar
copy 00lib.jar ..\01lib.jar
cd ..
rd /s /q classes

rem return to origin
cd ..\..

请注意,此脚本不使用来自 JEE 服务器的库(即所有具有“提供”范围的 Maven 库将被 error: cannot find class 报告为 jdeprscan)。

然后我生成一个 jdeprscan使用以下命令报告:

"C:\Program Files\Java\jdk-11\bin\jdeprscan" --for-removal --verbose --class-path ear\lib\*.jar ear\my-app.jar > deprscan.log 2>&1

然后您可以检查 jdeprscan.log文件。未找到的类可能不存在于最新的 Java 版本(例如 11)中,或者可能存在于 JEE 模块中。缺少的类如下所示(BASE64Encoder 不再由 Java 11 提供,但由 ChecksumHelper 使用):

Processing class oracle/spatial/security/ChecksumHelper...
error: cannot find class sun/misc/BASE64Encoder

在最好的情况下,您可以在日志文件中找到上面的 JAR 名称(例如 Jar file my-lib-2.3.4.jar ),否则您将需要根据类名来确定库。

注意:以上所有内容都是为了将​​ Java 8 迁移到 Java 11 而设计的。

关于java - 如何在 EAR 上运行 `jdeprscan`,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57256051/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com