gpt4 book ai didi

java 历史 map - JavacTool java.lang.ClassNotFoundException

转载 作者:行者123 更新时间:2023-11-30 06:45:22 25 4
gpt4 key购买 nike

尝试基于 ChronicleMap API 执行 myApp:

java -jar myApp-00.00.01-SNAPSHOT-jar-with-dependencies.jar

并获得异常。

Exception in thread "main" java.lang.AssertionError: java.lang.ClassNotFoundException: com.sun.tools.javac.api.JavacTool
at net.openhft.chronicle.values.CompilerUtils.reset(CompilerUtils.java:62)
at net.openhft.chronicle.values.CompilerUtils.<clinit>(CompilerUtils.java:51)
at net.openhft.chronicle.values.ValueModel.createClass(ValueModel.java:348)
at net.openhft.chronicle.values.ValueModel.createHeapClass(ValueModel.java:327)
at net.openhft.chronicle.values.ValueModel.heapClass(ValueModel.java:317)
at net.openhft.chronicle.values.Values.heapClassFor(Values.java:68)
at net.openhft.chronicle.values.Values.newHeapInstance(Values.java:37)
at com.twi.lib.ev.ipc.VTORId.<clinit>(VTORId.java:189)
at com.twi.lib.ev.ipc.Ipc.initialize(Ipc.java:294)
at com.twi.lib.ev.base.Preferences.areRequiredPreferencesSet(Preferences.java:356)
at com.twi.lib.ev.base.ApiEv.autoinitialize(ApiEv.java:48)
at com.twi.demo.ev_examples.Main.main(Main.java:116)
Caused by: java.lang.ClassNotFoundException: com.sun.tools.javac.api.JavacTool
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Unknown Source)
at net.openhft.chronicle.values.CompilerUtils.reset(CompilerUtils.java:58)
... 11 more

这是我的配置:

安装的操作系统:Windows 10

已安装 Java:JDK 1.8.0_131

Java路径:C:\Program Files\Java\jre1.8.0_131\bin\javaw.exe

ChronicleMaps 测试:3.10 - 3.13 - 所有这些版本都有同样的问题

MyApp 在 Netbeans 8.2 下运行良好,但如果尝试在命令窗口和命令中运行,总会出现此异常:

java -jar myApp-00.00.01-SNAPSHOT-jar-with-dependencies.jar

出了什么问题?

缺少 jar 库 JavacTool ?兼容性?ChronicleMap 中的错误?

感谢您为使用命令运行 myApp 提供的任何信息:

java -jar myApp.jar

最佳答案

成功了。以下是防止其他人在 Windows 和 java 配置方面遇到困难的方法。

如果您想以标准 java 方式运行 jar 应用程序(使用 ChronicleMap API) - 例如:

java -jar myApp.jar

你必须确保你执行的“java”是JDK java而不是JRE java。

这意味着您和您的应用。用户需要在系统上安装 JDK并配置为使用 JDK java,而不是 JRE java。

这从一开始我就很清楚,我认为我的系统正在运行JDK是java,但是没有。这是我解决这个问题的方法。

在 Windows 中(安装 JDK 后),您可能有多个位置/文件夹在系统环境变量中指定为 java.exe 的 PATH。

就我而言,我有 3 个对 java 的引用。您可以从命令行检查:

where java

我的结果是:

C:\Program Files\Java\jre1.8.0_131\bin
C:\Program Files\Java\jdk1.8.0_131\bin
C:\ProgramData\Oracle\Java\javapath

根据其他人的建议,我添加了: JAVA_PATH 变量并将其指向: C:\Program Files\Java\jdk1.8.0_131

但这并没有解决问题,我仍然运行 JRE,而不是 JDK java。

我还检查了 java 控制面板(开始菜单项中的“配置 Java”)。首先请注意,您必须以管理员身份运行它,否则任何更改都不会保留 -甲骨文就是这么说的。但对我来说,重新启动后,设置全部恢复为默认值和我所有的更改都消失了。

如果它适合您,请执行以下步骤:

  • Windows 开始菜单
  • 右键单击“配置 Java”
  • 更多 > 以管理员身份运行
  • 输入您的管理员。密码(如果您没有看到密码窗口,请在任务栏上查找该图标)
  • 将出现 Java 控制面板
  • 选择选项卡:Java
  • 点击:查看
  • 选择选项卡:系统
  • 单击:查找并导航到您的 java JDK 文件夹 - 例如:C:\Program Files\Java\jdk1.8.0_131\bin
  • 点击:下一步
  • 您将看到:C:\Program Files\Java\jdk1.8.0_131\bin\javaw.exe
  • 点击:完成
  • 启用添加的条目复选框并禁用所有其他
  • 好的,好的

现在,这应该表明我对 JDK java 而非 JRE java 的偏好。但事实并非如此。

所以,最后我删除了 PATH - Windows 系统环境变量中对 java 的所有引用除了 JDK 之外: C:\Program Files\Java\jdk1.8.0_131\bin

就这样完成了。

关于java 历史 map - JavacTool java.lang.ClassNotFoundException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43772192/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com