我尝试在Windows 10下的管理员命令行中重新打包JDK_ROOT \ lib \ modules,但收到错误消息:
//first extract modules's content
"C:\Program Files\Java\jdk-9.0.4\bin\jimage.exe" extract --dir="C:\Program Files\Java\jdk-9.0.4\lib\modules-extracted" "C:\Program Files\Java\jdk-9.0.4\lib\modules"
//try to repackage it and only contains java.base
"C:\Program Files\Java\jdk-9.0.4\bin\jlink.exe" -v --output "C:\Program Files\Java\jdk-9.0.4\lib\modules-repackaged" --module-path "C:\Program Files\Java\jdk-9.0.4\lib\modules-extracted" --add-modules java.base
//error:
jdk.tools.jlink.plugin.PluginException: Resource /java.base/java/lang/invoke/BoundMethodHandle$Species_D.class already present
根据@Alan Bateman的评论,我在提取的文件夹中删除了“ BoundMethodHandle $ Species _ ***”(源代码中的_L除外),在这个阶段就可以了。但是当在Eclipse中使用时,它表示仪器是必需的,但存在更多错误:
//try java.intrument gives another error
"C:\Program Files\Java\jdk-9.0.4\bin\jlink.exe" -v --output "C:\Program Files\Java\jdk-9.0.4\lib\modules-repackaged" --module-path "C:\Program Files\Java\jdk-9.0.4\lib\modules-extracted" --add-modules java.base,java.instrument
//error
Unable to compute the hash of module java.instrument
顺便说一句,如何重新打包JDK,使其包含所有模块。我可以使用“ --add-modules *”之类的东西吗? Java HelloWolrd除了基础和工具之外还需要哪些基本模块?
答案 0 :(得分:0)
您可以在JDK中使用jmods打包新的JDK
//first fork JDK9 or you may won't have an fully functional one
Xcopy /y /q /E /I "C:\Program Files\Java\jdk-9.0.4" "C:\Program Files\Java\jdk-9.0.4_repack"
//this is needed if you do this for the second time
rd /S /Q "C:\Program Files\Java\jdk-9.0.4_repack\jdk-9.0.4_repack"
//generate a meta-JDK from jmods
//it's called meta since the output is like a JDK
//but still missing some file to be used alone
"C:\Program Files\Java\jdk-9.0.4\bin\jlink.exe" -v --output "C:\Program Files\Java\jdk-9.0.4_repack\jdk-9.0.4_repack" --module-path "C:\Program Files\Java\jdk-9.0.4\jmods" --add-modules java.base,java.instrument
//combine the meta JDK with the forked JDK
//(close Eclipse first if it is referencing "C:\Program Files\Java\jdk-9.0.4_repack")
Xcopy /y /q /E /I "C:\Program Files\Java\jdk-9.0.4_repack\jdk-9.0.4_repack" "C:\Program Files\Java\jdk-9.0.4_repack"
现在,您可以将“ C:\ Program Files \ Java \ jdk-9.0.4_repack”作为另一个JDK / JRE选项添加到Eclipse,并在应用程序中使用它。该JDK仅包含您添加的模块。
待办事项:
(1)也许jlink可以生成完整的JDK而不是带有更正确参数的“元版本”
(2)使用jmod命令在“ C:\ Program Files \ Java \ jdk-9.0.4 \ jmods”中提取一些jmod,然后编辑内容,例如删除一些类,然后重新打包jmod,然后在jlink中使用它们。