簡體   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