为什么命令行没有找到我的.java文件?

时间:2017-09-02 22:00:11

标签: 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 -version,我目前正在使用javac 1.8.0_144。另一个Stack Overflow问题的人建议改变系统变量。我使用JAVA_HOME作为变量名,我将路径复制到我的JDK文件夹,但到目前为止,我没有太多运气。我仍然收到相同的错误消息。

5 个答案:

答案 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?如果没有,那么你就在错误的目录中。

现在你有两个选择

  1. 使用cd命令或
  2. 切换到正确的目录
  3. 您使用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 compilejavaenv.bat jarjavaenv.bat run-test1或不带参数运行以提示选择列表。

查看自定义清单,您可以在其中编写任何内容,并将其包含在./lib/test.jar文件中。编译目标在类路径中几乎没有第三方依赖库。