为什么不是';t命令行找不到我的.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

我正在使用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:未找到文件: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?如果不是,那么你在一个错误的目录中

现在你有两个选择

  • 您可以使用cd命令或
  • 您使用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命令提示符方面存在问题。我们只能做这么多……包含空格的路径必须用双引号括起来。