繁体   English   中英

无法从命令行运行 java 程序

[英]Unable to run java program from commandline

我在从命令行运行 java 程序时遇到了严重的问题。 我觉得我已经很接近弄清楚出了什么问题,但我只是不知所措,我需要帮助。

我正在尝试使用以下命令运行一个简单的 Hello World 程序(在 windows 上的 VSCode 中,使用 bash 终端):

javac Hello.java

java Hello

这根本行不通,但是,写入文件的完整路径确实有效,所以像这样的事情是可行的。

javac -cp c//path//to//file// Hello.java

java -cp c//path//to//file// Hello

此外,使用 F5 运行该文件也可以正常工作。 我想用命令行 arguments 运行我的程序,而不必每次都将整个路径写入文件,因为这非常乏味。

我的PATH和CLASSPATH变量如下:

PATH: C:\Program Files\Eclipse Adoptium\jdk-17.0.2.8-hotspot\bin

CLASSPATH: C:\Program Files\Eclipse Adoptium\jdk-17.0.2.8-hotspot\bin

谁能给我一些关于什么地方出了问题的见解? 我发现减少我必须手动编写的数量的最接近的解决方案是将 my.bashrc 中的变量保存到我当前的工作目录,使以下命令成为可能:

java "$cwd"Hello

任何帮助是极大的赞赏。

你的 CLASSPATH 坏了。

CLASSPATH 作为一个概念是java class 文件(或 jars 和其中的 class 文件)所在的位置。 不是java 二进制文件所在的位置(java 通常知道它们在哪里。对于少数不知道的工具, JAVA_HOME用于此,并且您提供“主目录”(该bin目录的父目录)。

Java 知道在哪里可以找到自己的核心类(比如java.lang.String和 co),这些都是由 bootclasspath 提供的。

通常,您一开始就不想使用CLASSPATH作为环境变量:您可以在一台计算机上拥有多个 java 项目,它们的需求完全不同。 这就是 IDE、构建工具和java -jar完全忽略该变量的原因。

但是,它制作普通 ole javac *.java; java MyClass javac *.java; java MyClass工作。 具体来说,您应该将CLASSPATH设置为:"."

就是这样。 只是点:当前目录。 完成此操作后,您只需键入:

javac MyApp.java
java MyApp

请注意,对于现代 java 版本,您实际上可以只编写java MyApp.java java 将在一个 go 中编译和运行您的代码。这将无法真正快速地工作(当您涉及依赖项和多个包时),但对于单个源文件的最学术简单的情况,它也可以正常工作。

请注意, "$PWD"开箱即用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM