我正在使用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
i在javac -version
中输入,目前正在使用Javac 1.8.0_144。有人在另一个堆栈溢出的问题中提出建议,以更改系统变量。我使用JAVA_HOME
作为变量名称,并复制了通往JDK文件夹的路径,但是到目前为止,我还没有很多运气。我仍然收到相同的错误消息。
这里有几个问题...包括为什么
问题1:
" ...我什至不允许在java中保存我的firstprogram.java 文档中的文件夹。"&lt; =?!?
问题2:
" ...我收到了关于一个错误标志的错误消息"
强有力的建议:
下载Eclipse,然后尝试从Eclipse编译和运行您的程序。换句话说,使用IDE而不是命令行。
您可以在此处下载Eclipse:
- http://eclipse.org
这里有一个很好的"入门教程":
- 创建您的第一个Java项目
运行dir或dir/p命令在命令提示符上查看您的目录内容
c: path to 您的程序目录 dir
查看firstProgram.java是否列出了?如果不是,那么您处于错误的目录。
现在您有两个选项
- 您使用CD命令或 更改为正确的目录
- 您使用firstProgram.java文件的绝对路径
导航到包含该程序的特定文件夹,然后[shift l_click],单击"打开cmd",然后再次运行它以确保它在该文件夹中运行。
您应该在使用命令时尝试使用绝对路径,如果该命令未找到文件。
javac /some/directory/path/to/the/file/FirstProgram.java
Note :在命令行上,如果文件不存在,则大多数壳牌都不会让您完成路径。另一种方式,如果您要从探险家/发现者复制路径,则应保证存在它。
edit :评论中指出的绝对路径将在Windows中使用前向斜线,例如:
javac somedirectorypathtothefileFirstProgram.java
这是我简化的 dosjavaide环境对于简单的测试应用程序,如果eclipse太麻烦了。我可以将编译并运行到特定JVM版本的应用程序。研究此脚本以查看每个命令中如何给出文件夹结构和路径。
文件夹和文件
c:projectstest1classes
c:projectstest1lib
c:projectstest1libsomelib1.jar
c:projectstest1libsomelib2.jar
c:projectstest1src
c:projectstest1srctestGameLoop2.java
c:projectstest1srcMETA-INFMANIFEST.MF
c:projectstest1javaenv.bat
javaenv.bat
@REM Standalone JavaDosEnvironment
@set JAVA_HOME=C:Program FilesJavajdk1.8.0_112
@"%JAVA_HOME%binjava" -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 .srcMETA-INF*.* .classesMETA-INF
set cp=./lib/somelib1.jar;./lib/somelib2.jar
"%JAVA_HOME%binjavac" -classpath "%cp%" -sourcepath ./src -d ./classes ./src/test/*.java
@goto :eof
:JAR
xcopy /Y .srcMETA-INF*.* .classesMETA-INF
SET MF=./classes/META-INF/MANIFEST.MF
"%JAVA_HOME%binjar" cvfm ./lib/test.jar %MF% -C ./classes .
@goto :eof
:RUN-test1
"%JAVA_HOME%binjava" -cp "./lib/*" test.GameLoop2 "fullscreen=false" fps=60 vsync=true
@goto :eof
:END
@pause
subtest.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
文件中。Compile Target在class Path中的第三方依赖库很少。