我正在使用Windows CMD,出于某种原因,我收到与我的.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。另一个Stack Overflow问题的人建议改变系统变量。我使用JAVA_HOME
作为变量名,我将路径复制到我的JDK文件夹,但到目前为止,我没有太多运气。我仍然收到相同的错误消息。
答案 0 :(得分:1)
如果找不到文件,则应该在使用命令时尝试使用绝对路径。
javac /some/directory/path/to/the/file/FirstProgram.java
注意 :在命令行上,如果文件不存在,大多数shell都不会让你完成路径。另一方面,如果您从资源管理器/查找器复制路径,则应保证存在。
编辑 :评论中指出的绝对路径将在Windows中使用正斜杠,例如:
javac \some\directory\path\to\the\file\FirstProgram.java
答案 1 :(得分:1)
运行dir或dir / p命令,在命令提示符下查看目录内容
c:\ path \ to \ your program directory \ dir
查看是否列出了FirstProgram.java?如果没有,那么你就在错误的目录中。
现在你有两个选择
答案 2 :(得分:1)
这里有几个问题......包括原因
问题1:
&#34; ...我甚至不允许在Java中保存我的FirstProgram.java 文档中的文件夹。&#34; &lt; =?!?
问题2:
&#34; ...我收到了关于假旗帜的错误消息&#34; &lt; =这可能是一个空间&#34; &#34;在路径名称
强烈建议:
下载Eclipse并尝试从Eclipse编译和运行程序。换句话说,使用IDE而不是命令行。
您可以在此处下载Eclipse:
有一个很好的&#34;初学者教程&#34;这里:
答案 3 :(得分:0)
导航到包含该程序的特定文件夹,然后[Shift + L_Click],单击打开cmd,然后再次运行以确保它在该文件夹中运行。
答案 4 :(得分:-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
文件中。编译目标在类路径中几乎没有第三方依赖库。