2017-09-02 129 views
0

我使用Windows CMD,出於某種原因,我收到了與我的.java文件有關的錯誤消息。例如,我打字:爲什麼命令行沒有找到我的.java文件?

javac FirstProgram.java 

然而,出現此錯誤消息:

javac: file not found: FirstProgram.java 
Usage: javac <options> <source files> 
use -help for a list of possible options 

javac -version類型的,我目前使用javac 1.8.0_144。有人在另一個堆棧溢出問題建議更改系統變量。我使用JAVA_HOME作爲變量名稱,並將路徑複製到我的JDK文件夾,但到目前爲止,我沒有太多運氣。我仍然收到相同的錯誤消息。

+4

我猜你'從錯誤的fo中運行命令lder連續。 – Carcigenicate

+4

最可靠的解釋是沒有FirstProgram.java文件。 'dir'的輸出是什麼? –

+0

向我們展示目錄樹 –

回答

1

如果沒有找到文件,則應該嘗試使用絕對路徑。

javac /some/directory/path/to/the/file/FirstProgram.java 

:在命令行中,大部分炮彈就無論如何不會讓你完成路徑,如果文件不存在那裏。另一種方法是,如果您從探索者/發現者複製路徑,則應保證其存在。

編輯:將使用在評論中指出的絕對路徑斜槓在Windows中,如:

javac \some\directory\path\to\the\file\FirstProgram.java 
+0

是的,但他在Windows上...... – Robert

+0

當我這樣做時,我收到了有關錯誤標誌的錯誤消息。 – Bijou

+0

@Robert絕對路徑在Windows中仍然可用。那裏有什麼問題? – nullpointer

0

瀏覽到包含程序則是特定的文件夾[Shift + L_Click]單擊打開cmd,然後再次運行以確保它正在該文件夾中運行。

-1

這是我的一個簡化的DOSJavaIDE環境簡單的測試應用程序如果Eclipse太麻煩了。我可以將應用程序編譯並運行到特定的JVM版本。研究此腳本以查看每個命令中的文件夾結構和路徑。

文件夾和文件

c:\projects\test1\classes\ 
c:\projects\test1\lib\ 
c:\projects\test1\lib\somelib1.jar 
c:\projects\test1\lib\somelib2.jar 
c:\projects\test1\src\ 
c:\projects\test1\src\test\GameLoop2.java 
c:\projects\test1\src\META-INF\MANIFEST.MF 
c:\projects\test1\javaenv.bat 

javaenv.bat

@REM Standalone JavaDosEnvironment 
@set JAVA_HOME=C:\Program Files\Java\jdk1.8.0_112 

@"%JAVA_HOME%\bin\java" -version 

@set cmd=%1 
@if "%cmd%"=="" (
    @echo Please specify command to run ^(1..n or empty to exit^) 
    @echo 1=Compile, 2=Jar, 12=CompileJar 
    @echo 3=Run-test1 GameLoop2 with vsync 
    @SET /p cmd="1..n: " 
) 

@IF /I "%cmd%"=="1"   set cmd=compile 
@IF /I "%cmd%"=="compile"  call :COMPILE 
@IF /I "%cmd%"=="2"   set cmd=jar 
@IF /I "%cmd%"=="jar"   call :JAR 
@IF /I "%cmd%"=="12"   set cmd=compilejar 
@IF /I "%cmd%"=="compilejar" (
    call :COMPILE 
    call :JAR 
) 

@IF /I "%cmd%"=="3"   set cmd=run-test1 
@IF /I "%cmd%"=="run-test1" call :RUN-test1 
@goto :END 


:COMPILE 
xcopy /Y .\src\META-INF\*.* .\classes\META-INF\ 
set cp=./lib/somelib1.jar;./lib/somelib2.jar 
"%JAVA_HOME%\bin\javac" -classpath "%cp%" -sourcepath ./src -d ./classes ./src/test/*.java 
@goto :eof 

:JAR 
xcopy /Y .\src\META-INF\*.* .\classes\META-INF\ 
SET MF=./classes/META-INF/MANIFEST.MF 
"%JAVA_HOME%\bin\jar" cvfm ./lib/test.jar %MF% -C ./classes . 
@goto :eof 

:RUN-test1 
"%JAVA_HOME%\bin\java" -cp "./lib/*" test.GameLoop2 "fullscreen=false" fps=60 vsync=true 
@goto :eof 

:END 
@pause 

MANIFEST.MF

Implementation-Title: testapp 
Implementation-Version: 1.0.0 (2017-07-21) 
Implementation-Vendor: myname 
Implementation-URL: http://my.homepage.com/ 

運行此命令行中的腳本(如javaenv.bat compile,javaenv.bat jar,javaenv.bat run-test1),或者在沒有參數的情況下運行以提示選擇列表。

看到一個自定義的清單,你可以寫任何你想要的,幷包含在./lib/test.jar文件中。編譯目標在類路徑中有很少的第三方依賴庫。

1

使用dir或DIR/p命令看到你的命令提示符目錄內容

C:\路徑\爲\程序目錄\目錄

看看FirstProgram.java是否列出?如果沒有,那麼你是在一個錯誤的目錄。

現在你有兩個選擇

  1. 您可以使用cd命令或
1

這裏有幾個問題,您可以使用絕對路徑爲您FirstProgram.java文件更改爲正確的目錄...包括爲什麼

問題1:

「...我甚至不允許將我的FirstProgram.java保存在Documents中的Java 文件夾中。」 < =?!?

問題2:

「......我得到了一個假標誌錯誤消息」 < =這可能是在路徑名

強烈建議下一個空格‘’ :

下載Eclipse並嘗試編譯並從Eclipse運行您的程序。換句話說,使用IDE而不是命令行。

你可以在這裏下載Eclipse:

有一個很好的 「初學者教程」 在這裏:

相關問題