【问题标题】:About this servlet + tomcat example, can not compile servlet using javac关于这个 servlet + tomcat 示例,无法使用 javac 编译 servlet
【发布时间】:2016-01-19 19:16:12
【问题描述】:

我目前正在关注《Head First Servlets and JSP》一书,我在第 81 页上提到了作者要求使用 javac 编译 servlet。

我在执行那行代码时遇到问题。我认为我的 JAVA_HOME 等必须正确设置,因为我创建了一个示例 HelloWorld.java 和 使用 javac 编译它并创建对应的 .class 文件。

我没有看到这个命令的逻辑,你指定了 servlet-api.jar 文件的类路径,然后你给它另一个路径,以便它可以执行 .java 文件? 我想摆脱我现在所处的这个洞。这些是我的文件的路径:

C:\Users\Carlos L\Tomcat\apache-tomcat-8.0.28\bin\servlet-api.jar 这就是我的 BeerSelect.java 文件所在的位置: C:\Users\Carlos L\Tomcat\My Tomcat Projects\beer-v1\src\com\example\web\BeerSelect.java

到目前为止,我一直在估算: javac -classpath C:\Users\Carlos L\Tomcat\apache-tomcat-8.0.28\bin\servlet-api.jar;类:。 d-classes src\com\example\web\BeerSelect.java

我收到此错误:

javac:无效标志:d-classes 用法:javac

这不应该这么难。

【问题讨论】:

    标签: java jsp tomcat servlets


    【解决方案1】:

    首先,是的可以针对一个 jar 进行编译,然后针对不同的 jar 运行。特别是一个名为 something-api.jar 的 jar 通常包含 构成应用程序接口 aka API 的类,并且足以编译想要调用某物的程序,但实际执行这些调用需要额外的内部类,这些内部类使用各种名称打包在 jar 中,例如 something-impl、something-body、plain something 或多个 jar,例如 something-basic something-core something-addon something-option 等。

    其次,您的书显然使用了通用(但不是必需或通用)方案,其中 java 源代码文件和编译的类文件位于 单独的并行子树中,此处命名为 src 和 @ 987654322@。您的特定源文件显然是src\com\example\web\BeerSelect.java。对于这种情况,运行 java 编译器的语法是:

    javac -classpath (classpath) -d classes src\com\example\web\BeerSelect.java
    # or abbreviate -classpath as -cp, or use envvar CLASSPATH instead 
    

    这是连字符,然后是 d,然后是一个空格,然后是这里的目录名称 classes,然后是另一个空格和源路径(或多个源路径)。

    您最初不需要在类路径中指定classes,只需指定servlet-api.jar 文件。如果您稍后编译 some 但不是所有 src 子树的源文件,并且之前为 other 源文件编译的类文件已经在 classes 子树中,您确实需要servlet-api.jarclasses 目录。在 Windows 上,您使用分号 ; 分隔类路径条目,而在 Unix 上,您使用冒号 :,但您不应该混合使用它们。因此,您的案例将包括:

    javac -classpath \path\to\servlet-api.jar;classes (rest as above) 
    

    除了您的路径名显然包含空格C:\users\Carlos L\...,因此您必须将值放在引号中:

    javac -classpath "C:\users\Carlos L\tomcat-8.0.28\bin\servlet-api.jar;classes" (rest as above)`
    

    作为多次输入的替代方法,您可以将值放入 envvar CLASSPATH

    set CLASSPATH="C:\users\Carlos L\tomcat-8.0.28\bin\servlet-api.jar;classes"
    

    然后简单地做

    javac -d classes src\com\example\web\BeerSelect.java 
    

    同样适用于项目中的任何其他课程。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-09-04
      • 1970-01-01
      • 1970-01-01
      • 2013-12-01
      • 2015-04-09
      • 1970-01-01
      • 2022-10-04
      相关资源
      最近更新 更多