如何让 stdlib.jar 在 IntelliJ IDEA 中工作?

How can I get stdlib.jar to work in IntelliJ IDEA?

我使用过 the booksite for Computer Science: An Interdisciplinary Approach 中提供的 IntelliJ IDEA 安装程序,我可以毫无问题地使用该库。但是,我注意到安装搞砸了我的 Git bash 显示设置,所以我卸载了所有东西。

后来,我从 the JetBrains website 安装了最新版本的 IntelliJ (2021.3.3),显然所有以前的设置都被覆盖了,因为我无法再使用该库。所以,我降级回书站提供的版本,但是,我仍然不能使用标准库。

我已经尝试添加我发现的库 .jar 文件的版本:

通过 IntelliJ IDEA 将模块和库放在一起和独立,路径如下:“文件 > 项目设置 > 模块 > + > JAR 或目录”和“文件 > 项目设置 > 库 > + > Java" ,并选择相应的 directory/file,没有运气,因为我收到了“找不到符号”错误消息:

Barnsley.java:16: error: cannot find symbol
        StdDraw.setScale(-0.1, 1.1);              // leave a 10% border
        ^
  symbol:   variable StdDraw
  location: class Barnsley

代码中每一次提到 Std 库。我还尝试编辑环境系统变量并创建一个名为“CLASSPATH”的变量并将其链接到 Stdlib.jar 文件,然后链接到 hello.zip 文件附带的 .lift 文件夹,从第一个周作业。再一次,运气不好,因为我一直收到相同的错误消息。

接下来,我输入了:

javac -cp stdlib.jar Barnsley.java

在命令行中,虽然该命令本身没有导致任何错误消息,但当我尝试 运行 程序时,键入:

java -cp stdlib.jar Barnsley 10000

显示此错误消息:

错误:无法找到或加载主 class 巴恩斯利 原因:java.lang.ClassNotFoundException:巴恩斯利

我也徒劳地尝试将每个 .java 文件 from Standard libraries webpage 复制并粘贴到我保存程序文件的同一目录中。

我知道有些人(也许很多人)以前在这里或其他论坛上问过相同或类似的问题,但我已经用谷歌搜索了三天并寻找解决方案,就像你一样可以看到,none 我发现的报告解决方案对我有帮助,这就是为什么我决定自己再问一次。

感谢您阅读我的 post and/or,感谢您提供任何帮助。

PS.: 错误消息中的Barnsley.java文件对应于this webpage from the booksite.

第5节中提供的文件

[编辑 - 2022 年 4 月 7 日]: 我试着听从@CrazyCoder 的建议,所以我创建了一个名为“src”的文件夹,将 hello.zip 文件附带的 stdlib.jar 文件中的所有文件提取到 src 中,并将 Barnsley.java到那个文件夹。接下来,接下来,我尝试按照the webpage he mentioned的说明进行操作,如下面的截图所示:

不知何故,在编译时得到了同样的错误信息:

我不知道出了什么问题 :C 非常感谢任何帮助。

[编辑 - 2022 年 4 月 7 日晚些时候]:

奇怪的事情发生了。我下载了@CrazyCorder 提供的文件,有一条关于未安装 Amazon Corretto 的警告,我决定忽略它。

我尝试从命令行 运行 程序,但没有成功,因为我得到的错误消息一如既往。因此,我注意到在项目结构中没有分配给 SDK 插槽的 JDK,我选择使用 JDK 18(遵循路径“文件 > 项目结构 > 项目”),这是我以前在我的电脑上安装的那个,但这并没有真正改变一件事。

最后,我尝试从 IDE 运行 它,然后它终于起作用了!!!所以,谢谢你,@CrazyCoder :D 我仍然不知道为什么它不能从命令行运行,但是...

I also vainly tried copying and pasting every .java file from Standard libraries webpage to the same directory where I keep the program files.

这很好用,您需要将 stdlib.jar 中的所有 .java 文件放入 sources root directory(在项目视图中以蓝色标记)。 Barnsley.java 需要在同一目录中。

带有 .class 文件的 jar 将无法在 dependencies/classpath 中运行,因为您 cannot import classes from the default package in Java

将 类 保留在默认包中是一个非常糟糕的选择,这是 library/course 的创建者的错。多年来,这个简单的疏忽造成了严重的问题。