为什么不是';t命令行找不到我的.java文件?
我正在使用Windows CMD,由于某种原因,我收到了与.java文件相关的错误消息。例如,我正在键入:为什么不是';t命令行找不到我的.java文件?,java,Java,我正在使用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:未找到文件:FirstProg
javac FirstProgram.java
但是,出现以下错误消息:
javac: file not found: FirstProgram.java
Usage: javac <options> <source files>
use -help for a list of possible options
javac:未找到文件:FirstProgram.java
用法:javac
使用-help获取可能选项的列表
我输入了
javac-version
,目前使用的是javac1.8.0\u144。在另一个堆栈溢出问题中,有人建议更改系统变量。我使用JAVA\u HOME
作为变量名,并将路径复制到我的JDK文件夹,但到目前为止,我运气不太好。我仍然收到相同的错误消息 如果命令指示找不到文件,则在使用命令时应尝试使用绝对路径
javac /some/directory/path/to/the/file/FirstProgram.java
注意:在命令行中,如果文件不存在,大多数shell都不会让您完成路径。另一种方法是,如果您从资源管理器/查找器复制路径,则应保证该路径存在
编辑:注释中指出的绝对路径将在Windows中使用前斜杠,例如:
javac \some\directory\path\to\the\file\FirstProgram.java
导航到包含该程序的特定文件夹,然后[Shift+L_单击],单击open cmd,然后再次运行它以确保它在该文件夹中运行。如果Eclipse太麻烦,这是一个简化的DOSJavaIDE环境,用于简单的测试应用程序。我可以将编译和运行应用程序指向特定的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
文件中。编译目标在类路径中几乎没有第三方依赖库。运行dir或dir/p命令,在命令提示符下查看目录内容
c:\path\to\your program directory\dir
查看是否列出FirstProgram.java?如果不是,那么你在一个错误的目录中
现在你有两个选择
这里有几个问题。。。包括为什么 问题1: “…我甚至不允许在java中保存我的FirstProgram.java
“我猜您是从错误的文件夹运行命令。最可靠的解释是没有文件FirstProgram.java。”。
dir
的输出是什么?向我们显示目录树请使用以下附加信息更新您的帖子:1)复制/粘贴“FirstProgram.java”的内容。2) 在用于“javac”的同一命令提示符中,键入dir*.java
,并复制/粘贴该命令。可能您的目录不正确。我不是windows迷,但您可以使用dir
命令检查该文件是否存在。当我这样做时,我收到一条关于错误标志的错误消息。@Robert绝对路径在windows中仍然可用。有什么问题?@nullpointer-问题是正斜杠是Windows上的一个选项。@nullpointer-显然,OP在Windows的基础知识和Windows命令提示符方面存在问题。我们只能做这么多……包含空格的路径必须用双引号括起来。