6 java openjdk jvm sun tools.jar
虽然tools.jar它不是 JRE 中的一个组件,但它附带了 JDK 的所有主要实现,例如 Oracle JDK 和 OpenJDK。
不是 JRE 的标准组件意味着当我分发使用 的 Java 应用程序时tools.jar,我必须将它与应用程序包一起分发或将其包含在类路径中。
我的问题是:
tools.jar,但是 OpenJDK 呢,我们可以从 OpenJDK 分发 tools.jar 以避免许可问题吗?简短回答:如果不重新tools.jar分发整个包,您不能仅从 Oracle JDK 或 OpenJDK 重新分发。
详细解答如下:
在互联网上阅读了几篇文章后,以下是我对您的问题的发现:
tools.jar 是否包含平台相关的组件,以防止它在不同平台(Windows/Linux/OSX)之间分布?
没有为 定义标准依赖项tools.jar。我编写了一个示例程序,它可以在 Unix 和 Windows 机器上完美运行。我已经tools.jar从 Windows 机器复制到 Unix 机器。一切正常。
我们已经知道 Oracle JDK 不允许分发 tools.jar,但是 OpenJDK 呢,我们可以从 OpenJDK 分发 tools.jar 以避免许可问题吗?
tools.jar,您必须重新分发整个Oracle JDK,或者只使用“javac 字节码编译器”重新分发整个 JRE,其中包括tools.jar;允许重新分发与您的应用程序“捆绑”。来源: 我们可以重新分发 Oracle tools.jar 吗? Oracle JDK 许可证: http : //www.oracle.com/technetwork/java/javase/readme-142177.html#redistribution
如果 tools.jar 不能与 Java 应用程序一起分发,是否有一种独立于平台的方法来确定其位置,以便将其放入类路径?
OpenJDK带有 GNU 通用公共许可证,版本 2,带有类路径例外。GPL v2 许可软件的被许可人可以:
您可以在The GNU General Public License v2 - An Overview 中获得有关 GPL v2 的更多详细信息
更新:找到并添加tools.jar到类路径中。
如果最终用户使用 JDK 运行应用程序,您将tools.jar自动获得所需。如果没有,那么您需要建议用户安装JDK.
要通过程序检查这一点,您可以使用 Eclipse JDT JAR。下面的代码显示了如何在 JVM 中定位当前 JDK/JRE 的绝对路径,并将 JAR 添加到classpath.
IVMInstall jre = JavaRuntime.getDefaultVMInstall();
File jdkHome = jre.getInstallLocation();
IPath toolsPath = new Path(jdkHome.getAbsolutePath())
.append("lib")
.append("tools.jar");
IRuntimeClasspathEntry toolsEntry =
JavaRuntime.newArchiveRuntimeClasspathEntry(toolsPath);
toolsEntry.setClasspathProperty(IRuntimeClasspathEntry.USER_CLASSES);
Run Code Online (Sandbox Code Playgroud)
来源:以编程方式启动 Java 应用程序
如果 tools.jar 不存在,您可以在此处检查是否存在,然后显示消息,否则以编程方式将其添加到类路径中。
石狮
| 归档时间: |
|
| 查看次数: |
2346 次 |
| 最近记录: |