java定制jre_JDK13如何建立模块化并定制最小JRE简明教程

2019年12月17日00:14:47

一、使用netBeans建立modular project。

(一)、在src目录下建立包名。

(二)、新建java类,并手动加入package+包名。这步必须!!!

(三)、新建module-info.java  (目录默认在src,不能在其他类的包下!)

二、手动编译:以管理员方式模式运行命令提示符,进入%jdk_home%

(一)、建立目录mlib  : mkdir mlib; 建立存放class的目录mods :mkdir mods;

(二)、编译类文件。

javac -d mods\com.greetings  F:\NetBeanWorkSpace\com.greetings\src\module-info.java  F:\NetBeanWorkSpace\com.greetings\src\com\greetings\Main.java

(1)、使用-d参数;

(2)、mods是编译所生成的类文件的存放文件夹名称。

(3)、com.greetings是模块化的模块名称。

(4)、把全路径的java文件使用空格分开,全部列入。

(三)、打包。

jar -cfe mlib/greetings.jar  com.greetings.Main  -C  mods/com.greetings .

(1)、-cfe  -C  jar命令参数

(2)、mlib打包后文件存放的目录名;

(3)、greetings.jar 打包后所生成的jar文件名;

(4)、com.greetings.Main 包名完整的含有main()方法的主类类名;

(5)、mods 文件目录,存放编译后的class文件的文件夹名称。

(6)、jar命令最后要使用“.”结束,表示将全部文件打包。

(四)、运行模块

java -p mlib -m com.greetings

(1)、-p  指示接下来是模块的路径名

(2)、-m  指示接下来的是模块名称

三、使用jlink提取类依赖,最小jre

(一)、第一种方式:以class文件目录的全部class文件为基础 ,建立Jre环境

(1)、jlink --module-path mlib --add-modules com.greetings --output greetingsapp

(2)、运行。C:\Program Files\Java\jdk-13.0.1\bin\greetingsapp\bin>java -m com.greetings

输出:Greetings!

(二)、第二种方式,以生成的jar文件建立模块(扩展名为jmod),以模块为基础建立Jre环境

(1)jmod  create  --class-path  mlib/greetings.jar  jmods/module.jmod

(2)jlink  -p  jmods  --add-modules  com.greetings  --output  jresss

(3)运行。C:\Program Files\Java\jdk-13.0.1\bin\jresss\bin>java -m com.greetings

输出:Greetings!

注意事项:

1\模块名称是大小写敏感的:Msd 不等于 msd 。

module Msd {

requires java.desktop;

requires java.logging;

}

2\以上步骤也可以先建立非modular类型的项目,而是在普通项目中建立module-infor.java ,并把依赖的包用 requires  java.desktop;声明

3\用jlink 导出运行时jre后,测试模块能否执行需进入生成的jre\bin目录下用“java –m 模块名称”cmd命令。生成的jar文件、.mod文件不能双击执行!

常见问题:jlink --launcher run=jlinkModule/msd.NewJFrame --module-path jmods;msd --add-modules Msd --output msdJRE

错误: java.lang.IllegalArgumentException: jlinkModule does not have main class: msd.NewJFrame.class

解决办法:(1)首先要在建立jmod时添加 –main-class  msd.NewJFrame  选项:

jmod  create  --class-path  mlib/msd.jar --main-class msd.NewJFrame  jmods/msd.jmod      (2)、其次,修改以上jlink命令中 jlinkModule为生产的模块名称Msd  。

jlink --launcher run=Msd/msd.NewJFrame --module-path jmods;msd --add-modules Msd --output msdJRE  ,加粗部分表示在生成的bin 目录下生成一个可执行的脚本:run.bat,其内容为

@echo off

set JLINK_VM_OPTIONS=

set DIR=%~dp0

"%DIR%\java" %JLINK_VM_OPTIONS% -m Msd/msd.NewJFrame %*

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
精简jre步骤 1. 拷贝一个完整版的jre文件夹到D盘 2. 删除jre目录下所有出bin和lib目录的所有文件或目录 3. 打开cmd窗口,设置path路径为空,转到D:\jre\bin目录,运行java –version。正常显示当前Java的版本。 4. 在bin目录中新建一个temp目录,将除java.exe和java.dll外的移到temp目录中 5. 再次运行java –version命令,提示没找到verify.dll。将temp目录中的verify.dll移到bin目录中 6. 再次运行 java –version命令,提示:Could not create the Java virtual machine.错误 7. 根据测试:还要将hpi.dll和zip.dll放到bin目录中 8. 再次运行java –version命令,OK,又出现了版本信息。此时,可以将temp目录移出bin目录中。(放到桌面先) 9. 删除client目录中的除jvm.dll外的文件。转到jre目录,查看bin目录的大小,为2.89MB。但此时lib目录仍有60M有余 10. 转到lib目录,新建一个temp目录,将i386除外的目录都移动到temp目录中,再次运行java –version命令,OK 11. 再新建一个temp2目录,将charsets.jar和rt.jar外的所有文件移动到temp2目录中,再次运行 Java –version命令,OK 12. 将temp2和temp目录移到桌面。此时lib仍有48.7M接近50M。(还得努力) 13. 缩减charsets.jar和rt.jar(使用7z工具可以查看和修改jar文件的内容『直接添加和删除』)。准备做个软件来实现。 14. 缩减原则。运行java -verbose:class -version > temp.java 命令,此时在bin目录下生成了一个temp.java文件,用EditPlus打开,看到没有,要加载的就是那些类了,把不需要的全部删除就是了。 15. 原来charsets.jar没有加载呀。直接删除,再次运行java –version命令,OK 16. 接下来的工作就是裁剪rt.jar了。慢慢来。也可以做个软件来完成。可以下载一个GreenJVMMake.jar来完成。不过有时候好像有些类没加载到。要考虑更新了。 17. 裁剪玩rt.jar后,再次运行java –version ,出现了版本信息。OK 18. 转到D盘查看一下精简的jre才4.47MB。不到5M。OK 19. 最小jre制作完毕。 附带制作过程图片,可用Picasa来查看,播放模式效果更佳。 Thoams 2010-6-25 15:53

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值