当前位置: 首页 > 知识库问答 >
问题:

关于这个servlet+tomcat示例,不能使用javac编译servlet

韩捷
2023-03-14

我在执行这行代码时遇到了问题。我认为我的JAVA_HOME和etc必须正确设置,因为我创建了一个示例helloworld.java并使用javac编译了它,它创建了Commentor.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类src\com\example\web\beerselect.java

我得到了这个错误:

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

共有1个答案

仉嘉泽
2023-03-14

首先,是的,对一个jar进行编译,然后对另一个jar运行是有效的。特别是一个名为something-API的jar。jar通常只包含构成应用程序接口(也就是API)的类,并且足以编译想要调用something的程序,但实际执行这些调用需要额外的内部类,这些内部类使用各种名称封装在jar中,如something-impl、something-body、plain something或多个jar(如something-basic something-core something-addon something-option)等。

其次,您的书显然使用了通用(但不是必需的或通用的)方案,其中java源代码文件和已编译的类文件位于单独的并行子树中,这里称为srcclasss。您的特定源文件显然是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,然后是空格,然后是目录名classs,然后是另一个空格和源路径(或多个源路径)。

最初不需要在类路径中指定classes,只需要在servlet-api.jar文件中指定。如果您稍后编译了src子树的部分但不是全部源文件,并且之前为其他源文件编译的类文件已经在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类路径中

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

然后简单地做

javac -d classes src\com\example\web\BeerSelect.java 
 类似资料:
  • 奇怪的是,标记为“OK”的行编译得很好,但标记为“Error”的行失败了。它们看起来基本上是一样的。

  • 问题内容: 我正在尝试使用Ant将Web应用程序打包到war文件中。 构建时,出现以下错误: 以下是我的build.xml 如何编译没有主类的类文件? 如何设置课程路径? 作为参考,我正在使用Eclipse。 问题答案: 除了需要在JDK的/ lib目录中的tools.jar的javac任务以外,所有您的蚂蚁工具都可以正常工作,在这种情况下,JRE是不够的。因此,来自ant的提示是:“无法找到ja

  • 尝试运行apachesparks示例代码之一(https://github.com/apache/spark/blob/master/examples/src/main/scala/org/apache/spark/examples/graphx/AggregateMessagesExample.scala)我得到以下编译错误 但从方法上看,这似乎是正确的。不确定这里出了什么问题。

  • 问题内容: 我不得不发现我的项目中有Java代码,该代码可以在Eclipse中编译并正常运行,但是会在javac中引发编译错误。 一个完整的代码段: javac中的编译返回: 现在,此错误阻止在Maven中构建项目。由于Eclipse编译器具有更高的容忍度,因此我现在不得不假设代码段的定义和用法如上所述,静态方法不是有效的Java吗? 问题答案: 似乎Sun的1.6 JDK无法推断正确的类型。以下

  • 我在Eclipse中pom.xml中收到错误消息。 http://Maven.apache.org/Maven-v4_0_0.xsd“>4.0.0com.hmis chmis war 1.0-快照chmis Maven Webapp http://Maven.apache.org 这是我的pom.xml。当我运行该程序时,会出现如下错误。

  • 当我试图编译一个带有注释的项目时,我遇到了以下错误 如何在java解析器中修复此错误?我使用elcipselink和eclipse作为IDE。