【问题标题】:Error while oprating javac -d: invalid flag? If I correct it, another package-not-found error appeared instead操作 javac -d 时出错:标志无效?如果我更正它,则会出现另一个 package-not-found 错误
【发布时间】:2023-03-14 14:10:01
【问题描述】:

我是 Java EE 的新手。我正在按照 Head First Servlets and JSP 一书的步骤创建一个简单的 Web 应用程序。

我用 Java 写了一个简单的 servlet。现在,我打算编译它并将类放到开发环境中。我没有使用任何内置工具,只是在 Windows 中使用 javac 命令。 servlet 的路径是 D:\Learning Exercises\HeadFirstSnJ_Demo1\src\com\example\web\BeerSelect.java。而且我打算把class文件放到目录D:\Program Files (x86)\apache-tomcat-7.0.39\webapps\HeadFirstSnJ_Demo1\WEB_INF\classes\com\example\web\

书上的命令是:

% cd MyProjects/beerV1
% javac -classpath /Users/bert/Applications2/tomcat/common/lib/servlet-api.jar:classes:. -d classes src/com/example/web/BeerSelect.java

我在 Windows 下运行了这些命令:

D:\>cd D:\Learning Exercises\HeadFirstSnJ_Demo1\src\com\example\web
D:\Learning Exercises\HeadFirstSnJ_Demo1\src\com\example\web>javac -classpath D:/"Program Files (x86)"/apache-tomcat-7.0.39/lib/servelt-api.jar;-d D:/"Program Files (x86)"/apache-tomcat-7.0.39/webapps/HeadFirstSnJ_Demo1/WEB_INF/classes/com/example/web BeerSelect.java

系统返回一个无效标志错误给我(我使用的是非英文操作系统。以下信息是我自己翻译成英文的):

javac: Invalid: D:/Program Files (x86)/apache-tomcat-7.0.39/webapps/HeadFirstSnJ_Demo1/WEB_INF/classes/com/example/web
Usage: javac <options> <source files>
-help to list all the valid options

为什么会这样?我是否以错误的方式使用了这个 javac -classpath -d 命令?

其实我觉得“;”有问题在“-d”前面。如果我替换“;”有一个空格,就不会有这个无效的标志错误,而是一个“包javax.servlet不存在”错误,这真的很困惑,因为我在这里包含了servlet-api.jar!

更正的代码在这里:

D:\Learning Exercises\HeadFirstSnJ_Demo1\src\com\example\web>javac -classpath "D:\Program Files (x86)\apache-tomcat-7.0.39\lib\servelt-api.jar" -d "D:\Program Files (x86)\apache-tomcat-7.0.39\webapps\HeadFirstSnJ_Demo1\WEB_INF\classes\com\example\web" BeerSelect.java

【问题讨论】:

    标签: java jakarta-ee servlets classpath javac


    【解决方案1】:

    "servlet-api.jar" 的拼写错误。

    【讨论】:

      【解决方案2】:

      以这种方式使用您的目录导航

      "D:/Program Files (x86)/apache-tomcat-7.0.39/lib/servelt-api.jar"
      

      【讨论】:

      • 谢谢。我试过了,但没有帮助。我仍然遇到同样的错误。
      • @Angdi 这应该有助于 D:\Learning Exercises\HeadFirstSnJ_Demo1\src\com\example\web>javac -classpath "D:/Program Files (x86)/apache-tomcat-7.0.39/ lib/servlet-api.jar" -d "D:/Program Files (x86)/apache-tomcat-7.0.39/webapps/HeadFirstSnJ_Demo1/WEB_INF/classes/com/example/web" BeerSelect.java
      • 我也在想同样的事情。它确实帮助解决了无效标志问题,但出现了“包 javax.servlet 不存在”错误,这真的很困惑,因为我已经在这里包含了 servlet-api.jar! O_O
      • 不知道为什么它会给出这个错误。这个设置对我来说很好用。你能检查一下你的类路径中的 jar 名称是否拼写正确吗?
      【解决方案3】:

      在 Windows 中使用“\”进行目录导航。 [ '/' 适用于 linux]。所以试试这个:

      D:\"Program Files (x86)"\apache-tomcat-7.0.39\lib\servelt-api.jar; -d D:\"Program Files (x86)"\apache-tomcat-7.0.39\webapps\HeadFirstSnJ_Demo1\WEB_INF\classes\com\example\web BeerSelect.java
      

      【讨论】:

      • 我认为这不是问题...我试过了,但没有帮助。
      • 再试一次,注意空格:javac -classpath D:\"Program Files (x86)"\apache-tomcat-7.0.39\lib\ servelt-api.jar; -d D:\"Program Files (x86)"\apache-tomcat-7.0.39\webapps\HeadFirstSnJ_Demo1\WEB_INF\classes\com\example\web BeerSelect.java
      • 仍然没有帮助...请查看我对问题的更新。谢谢!!
      • 但是你使用这个:d:/ !!使用这种方式 **d:\ **.
      • 嗯,我确实试过了。我更正了这样的命令: javac -classpath "D:\Program Files (x86)\apache-tomcat-7.0.39\lib\servelt-api.jar" -d "D:\Program Files (x86)\apache- tomcat-7.0.39\webapps\HeadFirstSnJ_Demo1\WEB_INF\classes\com\example\web" BeerSelect.java 而系统给了我一个包 javax.servlet doesn't exist" 而是报错
      猜你喜欢
      • 1970-01-01
      • 2012-07-04
      • 2019-10-30
      • 1970-01-01
      • 2017-09-03
      • 2017-11-25
      • 2016-10-05
      • 2021-11-02
      • 2011-08-31
      相关资源
      最近更新 更多