【问题标题】:Build Custom JDK, delete useless libs构建自定义 JDK,删除无用的库
【发布时间】:2016-06-22 11:04:29
【问题描述】:

如何从我的 JDK 中删除无用的库?

【问题讨论】:

  • 无用的库是什么意思?
  • 您可以简单地删除文件系统上的 jar 文件。但请注意,某些 Java 应用程序可能需要它们!
  • 我想为我的程序创建自定义 jdk 编译器
  • 我不建议您在不了解每个 .jar 的作用的情况下手动删除所有这些 .jar 文件。如果我理解正确,您想组装自己的 JDK,而不使用您不使用的模块。此类功能将在 Java 9 (Project Jigsaw) 中呈现。
  • Java SE Embedded 有compact profiles

标签: java java-8


【解决方案1】:

是的,这是可能的,documented by Oracle

对于我们的项目,我们使用以下“清理脚本”。您的可能不同,请参阅 cmets(例如:我们不使用 JavaFX)。

#!/bin/sh
# Remove all not-needed files, see http://www.oracle.com/technetwork/java/javase/jre-8-readme-2095710.html
# Documentation
rm -f jre/README.txt
rm -f jre/THIRDPARTYLICENSEREADME.txt
rm -f jre/THIRDPARTYLICENSEREADME-JAVAFX.txt
rm -f jre/Welcome.html
# optional files 
rm -f jre/lib/ext/jfxrt.jar
rm -f jre/lib/ext/access-bridge.jar
rm -f jre/lib/ext/access-bridge-32.jar
rm -f jre/lib/ext/nashorn.jar
rm -f jre/bin/rmid.*
rm -f jre/bin/rmiregistry.*
rm -f jre/bin/tnameserv.*
rm -f jre/bin/keytool.*
rm -f jre/bin/kinit.*
rm -f jre/bin/klist.*
rm -f jre/bin/ktab.*
rm -f jre/bin/policytool.*
rm -f jre/bin/orbd.*
rm -f jre/bin/servertool.*
rm -f jre/bin/javaws.*
rm -f jre/lib/jfr.*
# can be deleted when private application runtime is used (like launch4j)
rm -f jre/bin/java.exe
# launch4j uses javaw.exe. So do NOT delete!
rm -f jre/bin/javacpl.exe
rm -f jre/bin/jabswitch.exe
rm -f jre/bin/java_crw_demo.dll
rm -f jre/bin/JavaAccessBridge-32.dll
rm -f jre/bin/JavaAccessBridge.dll
rm -f jre/bin/JAWTAccessBridge-32.dll
rm -f jre/bin/JAWTAccessBridge.dll
rm -f jre/bin/WindowsAccessBridge-32.dll
rm -f jre/bin/WindowsAccessBridge.dll
rm -f jre/bin/wsdetect.dll
rm -f jre/bin/deploy.dll
rm -f jre/bin/javacpl.cpl
rm -f jre/lib/deploy.jar
rm -f jre/lib/plugin.jar
rm -Rf /s /q jre/bin/dtplugin
rm -Rf /s /q jre/bin/plugin2
rm -Rf /s /q jre/lib/deploy
# JavaFX related
rm -f jre/lib/javafx.properties
rm -f jre/lib/jfxswt.jar
rm -f jre/bin/decora_sse.dll
rm -f jre/bin/fxplugins.dll
rm -f jre/bin/glass.dll
rm -f jre/bin/glib-lite.dll
rm -f jre/bin/gstreamer-lite.dll
rm -f jre/bin/javafx_font.dll

Windows 版本:

:: Remove all not-needed files, see http://www.oracle.com/technetwork/java/javase/jre-8-readme-2095710.html
:: Documentation
del jre\README.txt
del jre\THIRDPARTYLICENSEREADME.txt
del jre\THIRDPARTYLICENSEREADME-JAVAFX.txt
del jre\Welcome.html
:: optional files 
del jre\lib\ext\jfxrt.jar
del jre\lib\ext\access-bridge.jar
del jre\lib\ext\access-bridge-32.jar
del jre\lib\ext\nashorn.jar
del jre\bin\rmid.*
del jre\bin\rmiregistry.*
del jre\bin\tnameserv.*
del jre\bin\keytool.*
del jre\bin\kinit.*
del jre\bin\klist.*
del jre\bin\ktab.*
del jre\bin\policytool.*
del jre\bin\orbd.*
del jre\bin\servertool.*
del jre\bin\javaws.*
del jre\lib\jfr.*
:: can be deleted when private application runtime is used (like launch4j)
del jre\bin\java.exe
:: launch4j uses javaw.exe. So do NOT delete!
del jre\bin\javacpl.exe
del jre\bin\jabswitch.exe
del jre\bin\java_crw_demo.dll
del jre\bin\JavaAccessBridge-32.dll
del jre\bin\JavaAccessBridge.dll
del jre\bin\JAWTAccessBridge-32.dll
del jre\bin\JAWTAccessBridge.dll
del jre\bin\WindowsAccessBridge-32.dll
del jre\bin\WindowsAccessBridge.dll
del jre\bin\wsdetect.dll
del jre\bin\deploy.dll
del jre\bin\javacpl.cpl
del jre\lib\deploy.jar
del jre\lib\plugin.jar
rmdir /s /q jre\bin\dtplugin
rmdir /s /q jre\bin\plugin2
rmdir /s /q jre\lib\deploy
:: JavaFX related
del jre\lib\javafx.properties

【讨论】:

    【解决方案2】:

    删除更多 jfx 的东西:

    删除 jre\lib\jfx*.* 删除 jre\bin\jfx*.*

    【讨论】:

      猜你喜欢
      • 2011-08-09
      • 2021-10-24
      • 1970-01-01
      • 2021-12-20
      • 1970-01-01
      • 2018-06-04
      • 1970-01-01
      • 2018-12-22
      • 2011-06-05
      相关资源
      最近更新 更多