问题标签 [bootclasspath]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
319 浏览

java - jdk.dynalink 在 Java 9 的引导类路径中不可见

我们的项目是使用 Eclipse OSGi 开发的,但也通过jardesc文件提供普通的 JAR 文件以供导出。该项目使用 ASM 库和javaagent交换调用。invokevirtualinvokedynamic

这在 Java 7 和 8 中运行良好。现在,我们升级到 Java 9 并将我们的实现移植到使用jdk.dynalink.

出口零件

  • OTRE_MIN:最小的运行时和元对象协议部分。
  • OTRE_DYN:动态编织代码(ASM)和运行时的其余部分。
  • OTRE_AGEND: java代理。

目前,OTRE_MIN还包括OTRE_DYN. 因此,所有内容都放入了引导类路径。

我用以下代码启动程序

但是,似乎这些 jdk.dynalink包在引导类路径上不再可见。

我阅读了有关 Java 9 和模块系统以及类加载器更改的其他线程,但它们没有为问题提供任何解决方案。

如何使Java 9 之前jdk.dynalink的类可见?$OTRE_MIN

0 投票
2 回答
4049 浏览

java - 如何在 java 11 中将 jar 添加到引导类路径

在我在 Java 8 上运行的应用程序中,我使用了使用 org.jboss.logmanager.LogManager 的第三方库,所以我在引导类路径中添加了这个 jar,它工作正常。但是当迁移到 java 11 时,-Xbootclasspath/a 或 -Xbootclasspath/p 都不起作用,我无法启动我的应用程序。

我在 java 9答案中找到了 How to add a jar to the boot classpath 。但它不适用于 java 10 或 11。任何人都可以帮助我吗?

0 投票
0 回答
725 浏览

java - 在 jdk9+ 上找不到引导类路径

openjdk 文档“JEP 261:模块系统”指出:

“一个相关的选项,-Xbootclasspath/a允许将文件和目录附加到默认的引导类路径。这个选项,以及java.lang.instrument包中的相关 API,有时被检测代理使用,因此为了兼容性,它在运行时仍然受支持。

它的值(如果指定)通过 JDK 特定的系统属性报告jdk.boot.class.path.append。”

但是,当我尝试使用此功能时,它不起作用。具体来说,我正在使用 Java 代理进行检测。

JDK7JDK8上一切正常。在JDK9+-Xbootclasspath/a似乎可以正常工作,但系统属性jdk.boot.class.path.append始终为null.

在 Java 7/8 上:

按预期工作。

在 Java 9 上:

总是返回空字符串。

我添加了一些调试代码来转储所有系统属性,似乎没有这样的属性。

我已经尝试过jdk-9.0.4并且jdk-11.0.3得到了类似的结果。

关于如何在 JDK9+ 上获取引导类路径的任何想法?

0 投票
1 回答
1093 浏览

java - 替换java中的bootclasspath选项

我正在尝试仅从命令行手动构建 Android 应用程序,而不使用任何额外的东西,例如构建系统(Gradle)。我正在关注这个页面

但是,我一直在编译 Java 源文件。
每当我发出命令时:(
javac -d obj -classpath src -bootclasspath E:/.android/sdk/platforms/android-10/android.jar src/com/example/hello/MainActivity.java
我的 Android SDK 位于E:/.android/SDK文件夹中)

error: option --boot-class-path not allowed with target 12
正在使用 JDK 版本 12.0.2。我知道从 JDK 版本 9 开始,boot-class-path选项被删除了。那么,如何编译 Java 源文件呢?JDK 12.0.2中boot-class-path选项的替代方法是什么?

0 投票
1 回答
1952 浏览

java - 引导类路径未与 -source 8 一起设置

我正在将我的应用程序从 java 1.8 升级到 java 11 当我尝试使用 ant 1.10.8 构建时,我的构建失败但我也看到了一个警告

我已经 在 build.xml中设置source=1.8了蚂蚁任务target=1.8javac

我错过了什么吗?如果我没有错,我需要设置引导类路径,但我不确定如何在 ant build.xml 文件中进行设置。我也得到以下错误

请帮忙

0 投票
1 回答
659 浏览

java - 我们如何使用 --patch-module 从 OpenJDK 11 覆盖 java.base/java.lang.Integer?

在 JDK-8 中,我们可以编译我们更改的 java.lang 类并重建rt.jar. 然后我们可以通过在 bootclasspath 中添加-Xbootclasspath:<yourpathto>/rt.jar. 这样做,我们可以例如使 java.lang.Integer 成为非最终的以用于测试目的。

在 JDK-11 中,这是不同的。修补是通过完成的--patch-modules,我无法让它工作。我做了以下事情:

  1. 去掉 final 修饰符并从 openjdk-11 源重新编译 java.base 模块
  2. 添加了--patch-module java.base=<path-to-my-compiled-java.base-directory>
  3. 它仍然失败error: cannot inherit from final Integer。可能我们不能再覆盖 JDK 源文件的类声明了?那会很奇怪。
  4. 我还尝试将这些类文件添加到 jar 并尝试将所有可能的根目录传递给--patch-module参数
  5. 我尝试package-info.class从编译java.base目录中删除模块并尝试显式java.base.java.lang.Integer添加--add-opens

文档对这种特定用法并不十分清楚。

来自 maven 的整个 javac 命令(我已经尝试过 javac 和 maven-compiler-plugin):

javac -d ./target/classes -classpath <classpathfiles> -sourcepath <sourcefiles> -s ./target/generated-sources/annotations -g -nowarn -target 11 -source 11 -encoding UTF-8 --patch-module=java.base=../runtimejar/mods/src/java.base -Xplugin:Manifold

(缩短路径名称等以提高可读性)

我在这里想念什么?为什么我不能这样修改java.base/java.lang.Integer

0 投票
0 回答
133 浏览

java - Netbeans 错误:无法在类路径或引导类路径中找到包 java.lang

安装 Netbeans 并创建空项目后,出现此错误:Unable to find package java.lang in class path or boot class path

我在互联网上搜索,答案是从配置文件更改 JDK。我做到了,但它对我不起作用。我也重新安装了 netbeans 但它不起作用
我认为问题出在类路径中,但我不知道如何在 netbeans 中设置类路径。

以前有人遇到过这个问题吗?感谢关注和帮助

在此处输入图像描述

图片帮助 > 关于 netbeans
在此处输入图像描述

以及配置文件的图像
在此处输入图像描述

0 投票
0 回答
56 浏览

java-11 - 目标 11 在 Windows 上失败时不允许引导类路径

我正在将 IKVM 代码库从 Java 8 升级到 Java 11,得到“目标 11 不允许引导类路径”