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

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是否列出了?如果不是,那么您处于错误的目录。

现在您有两个选项

  1. 您使用CD命令或
  2. 更改为正确的目录
  3. 您使用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 compilejavaenv.bat jarjavaenv.bat run-test1或无参数以提示选择列表。

请参阅自定义清单,您可以在其中写任何所需的内容,并包含在./lib/test.jar文件中。Compile Target在class Path中的第三方依赖库很少。

最新更新