java - 如何解决 Dr Java 中的“无法在类路径或引导类路径中找到包 java.lang”?
问题描述
我是 Java 新手。我正在参加大学初学者 Java 课程。我正在运行我的第一个 hello world 代码并收到一条错误消息。我已经安装了最新的 Dr. Java 稳定版并安装了 Java SE 12 JDK。
我已多次卸载并重新安装 Dr. Java,但仍然收到错误消息。我也重新编译了它,但错误消息仍然存在。
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello, World");
}
}
我希望代码输出在交互窗格下显示“Hello World”,但事实并非如此,而是出现一条错误消息,显示“当前文档与交互窗格不同步,应该重新编译!”。
此外,在控制台窗格下,我收到以下消息:
编译器正在使用 classPath = '[C:\Users\Admin, C:\Users\Admin\Downloads\drjava-beta-20190813-220051.jar]'; bootClassPath = 'null' 致命错误:无法在类路径或 bootclasspath 中找到包 java.lang
解决方案
意识到 OP 通过 JDK 版本解决了他的问题,我在遇到他描述的相同症状后遇到了这个问题。有了这个,即使问题最终与 OP 的情况不太“相同”,发布症状的解决方案似乎也是合适的:
我在编译不起作用时遇到了同样的问题。就我而言,我使用的 Linux 系统同时具有 OpenJDK 和手动安装的 Oracle JDK(从从 java.com 获得的 tarball 中提取),以及不同地方的一些其他 JRE 环境。我“安装”了DrJava Version : drjava-20190813-220051
jar 文件并从命令行运行它。[ Manual Download ]
然后,当它询问是否安装更新时,我单击了 ( drjava-beta-2019-220051
)。
DrJava 报告说我的编译器是JDK 8.0_222
. 注意,我不知道那个编译器是从哪里来的。据我所知,我没有安装那个版本。我的 OpenJDK 是:
$ /bin/java -version
openjdk version "1.8.0_252"
OpenJDK Runtime Environment (build 1.8.0_252-b09)
OpenJDK 64-Bit Server VM (build 25.252-b09, mixed mode)
我输入了一个简单的“Hello World”程序,每次编译尝试都会产生:
Compiler Output:
"Compilation completed."
这是一个错误,因为实际上编译显然没有完成。
点击Run
产生:
Interactions
Welcome to DrJava. Working directory is /home/krb/Projects/Software/java
Current document is out of sync with the Interactions Pane and should be recompiled!
>
重启DrJava、保存、点击Reset
等,都无法解决问题。
无论如何,在某些时候,我注意到控制台选项卡充满了如下消息:
Console
Compiler is using classPath = '[/home/krb/Projects/Software/java, /home/apps/drjava/drjava-beta-20190813-220051.jar]'; bootClassPath = 'null'
Fatal Error: Unable to find package java.lang in classpath or bootclasspath
在这一点上,我尝试了各种方法,但我专注于将 DrJava 指向我几天前安装的 Oracle Java JDK。我所做的一切都在Edit | Preferences ... | Resource Locations
里面,虽然我在那里打了一会儿。在我开始之前,所有设置都是“空白”的。无论如何,在我设置之后,我最终取得了一些成功:
Web Browser
/usr/lib64/firefox/firefox
Web Browser Command
Tools.jar Location
/home/raid/apps/oracle/jdk-1.8.0_251/jre/lib/tools.jar
Display All Compiler Version [ ]
Extra Classpath
/home/raid/apps/oracle/jdk1.8.0_251/jre/lib
/home/raid/apps/oracle/jdk1.8.0_251/lib
注意:您的 PATH 与我的不同!您需要使用系统上的实际路径。就我而言,我搜索了“rt.jar”和“tools.jar”,它们显然位于与已安装 JDK 相关的文件夹中。
在这一点上,我决定尝试找出使其正常工作所需的最低要求。经过大量摆弄,我发现只需设置就足够了Preferences | Resource Locations | Tools.jar Location
,但有一个主要警告。您必须使用该对话框浏览文件。您不能只是粘贴在路径中! 如果您只是粘贴路径,它可能看起来设置正确,但编译器将继续无法工作。这就是我让 oracle jdk 编译器工作的方式。
接下来,我开始查看是否可以让 OpenJDK 工作。我在整个系统中搜索了另一个tools.jar
属于 OpenJDK 的系统,但没有找到。然后我意识到我没有安装 DEVEL OpenJDK 包(在 Mageia Linux 7 上)。
java-1.8.0-openjdk-headless-1.8.0.252-1.b09.1.mga7
java-1.8.0-openjdk-1.8.0.252-1.b09.1.mga7
我安装了:
java-1.8.0-openjdk-devel-1.8.0.252-1.b09.1.mga7
现在,即使在重置默认值之后,DrJava 也不再说它正在使用JDK 8.0_222
,而是JDK 8.0-openjdk-1.8.0.252-1.b09.1.mga7.x86_64-OpenJDK
,并且一切正常,无需自定义首选项!
我不知道他是JDK 8.0_222
从哪里来的。我的系统上没有那个版本。我宁愿认为这是 DrJava 内部的一些东西。我认为要点是:
- 如果 DrJava 说它 using
JDK 8.0_222
,它可能不会工作! tools.jar
如果您的系统可能会拆分 OpenJDK 安装,请确保您确实安装了一个。- 指向安装了您正在使用的 JDK
Tools.jar Location
的现有tools.jar
文件,并确保浏览到它(不仅仅是粘贴到路径中)。
我知道我看到的是 Linux 和 DrJava 的 .jar 安装,这可能不是你所拥有的,但也许这些信息会有助于为你提供一些可以查看和尝试的东西。
推荐阅读
- laravel - laravel - 重置多个帐户的密码
- python - 获取一个列表并打印所有不等于 0 的元素的索引
- azure-devops - 在 Azure DevOps 中排队生成给我一个错误“进程无法访问文件......”
- javascript - 计算 4x4 矩阵的行列式 - (RayTracer 挑战) - Javascript
- python - 这个找不到媒体目录的 Nginx 配置有什么问题?
- php - 查询总是失败
- css - CSS 继承与 CSS 特异性
- python - 如何从函数中获取矩阵输出?
- javascript - React Router v4 未加载组件
- javascript - 如何使用 javascript 在 html 中搜索特定文本或“字符串”?(镀铬扩展)