在Ubuntu中编译Servlet会返回错误

我正在尝试编译要在webapp中使用的源代码。 我知道Ubuntu中的东西不像Windows中的东西,永久设置classpath不是一件好事,所以我决定暂时设置标志。 这是我在终端的命令:

littlejavachild@ubuntu:~/LittleJavaChild/ServletProjects/beerV1$ javac -cp "/usr/share/tomcat7/servlet-api.jar" -d classes src/com/example/*.java

我试图达到的是:

  • 编译包com.example中的所有.java文件
  • .class文件直接发送到相应的目录
  • 将classes文件夹复制到WEB-INF文件夹
  • 尽管设置classpath我得到的错误:

    src/com/example/ListenerTester.java:3: error: package javax.servlet does not exist
    import javax.servlet.*;
    ^
    src/com/example/ListenerTester.java:4: error: package javax.servlet.http does not exist
    import javax.servlet.http.*;
    ^
    src/com/example/ListenerTester.java:7: error: cannot find symbol
    public class ListenerTester extends HttpServlet{
                                        ^
      symbol: class HttpServlet
    src/com/example/ListenerTester.java:8: error: cannot find symbol
        public void doGet(HttpServletRequest request,
                          ^
      symbol:   class HttpServletRequest
      location: class ListenerTester
    src/com/example/ListenerTester.java:9: error: cannot find symbol
                    HttpServletResponse response) throws IOException, ServletException {
                    ^
      symbol:   class HttpServletResponse
      location: class ListenerTester
    src/com/example/ListenerTester.java:9: error: cannot find symbol
                    HttpServletResponse response) throws IOException, ServletException {
                                                                      ^
      symbol:   class ServletException
      location: class ListenerTester
    src/com/example/MyServletContextListener.java:2: error: package javax.servlet does not exist
    import javax.servlet.*;
    ^
    src/com/example/MyServletContextListener.java:4: error: cannot find symbol
    public class MyServletContextListener implements ServletContextListener{
                                                     ^
      symbol: class ServletContextListener
    src/com/example/MyServletContextListener.java:5: error: cannot find symbol
        public void contextInitialized(ServletContextEvent event){
                                       ^
      symbol:   class ServletContextEvent
      location: class MyServletContextListener
    src/com/example/MyServletContextListener.java:12: error: cannot find symbol
        public void contextDestroyed(ServletContextEvent event){
                                     ^
      symbol:   class ServletContextEvent
      location: class MyServletContextListener
    src/com/example/ListenerTester.java:14: error: cannot find symbol
            Dog dog = (Dog) getServletContext().getAttribute("dog");
                            ^
      symbol:   method getServletContext()
      location: class ListenerTester
    src/com/example/MyServletContextListener.java:6: error: cannot find symbol
            ServletContext sc = event.getServletContext();
            ^
      symbol:   class ServletContext
      location: class MyServletContextListener  
    

    我知道当类路径设置不正确时会发生这些错误。 请帮我解决一下这个。 告诉我什么是错的,我怎么去纠正它,以及将来如何避免它。

    用-verbose更新

    [类文件的搜索路径:/usr/lib/jvm/java-7-openjdk-i386/jre/lib/resources.jar,/usr/lib/jvm/java-7-openjdk-i386/jre/lib/rt的.jar,/ usr / lib中/ JVM / JAVA -7-的openjdk-I386 / JRE / LIB / sunrsasign.jar,/ usr / lib中/ JVM / JAVA -7-的openjdk-I386 / JRE / LIB / jsse.jar,/ usr / lib中/ JVM / JAVA -7-的openjdk-I386 / JRE / LIB / jce.jar,/ usr / lib中/ JVM / JAVA -7-的openjdk-I386 / JRE / LIB / charsets.jar,/ usr / lib中/ JVM / JAVA -7-的openjdk-I386 / JRE / LIB / netx.jar,/ usr / lib中/ JVM / JAVA -7-的openjdk-I386 / JRE / LIB / plugin.jar,/ usr / lib中/ JVM / Java的7-的openjdk-I386 / JRE / LIB / rhino.jar,/ usr / lib中/ JVM / JAVA -7-的openjdk-I386 / JRE / LIB / jfr.jar,/ usr / lib中/ JVM / JAVA -7- openjdk- I386 / JRE /类,/ usr / lib中/ JVM / JAVA -7-的openjdk-I386 / JRE / lib / ext目录/ localedata.jar,/ usr / lib中/ JVM / JAVA -7-的openjdk-I386 / JRE / LIB /分机/把sunjce_provider.jar,/ usr / lib中/ JVM / JAVA -7-的openjdk-I386 / JRE / lib / ext目录/ dnsns.jar,/ usr / lib中/ JVM / JAVA -7-的openjdk-I386 / JRE / LIB / EXT / java的ATK-wrapper.jar,/ usr / lib中/ JVM / JAVA -7-的openjdk-I386 / JRE / lib / ext目录/脉冲java.jar,/ usr / lib中/ JVM / JAVA -7- openjdk- I386 / JRE / lib / ext目录/ sunpkcs11.jar,/ usr / lib中/ JVM / JAVA -7-的openjdk-I386 / JRE / lib / ext目录/ Z ipfs.jar。是/ usr /共享/ tomcat7 / servlet的api.jar文件]


    把这个任务分成几部分,让我们先试着编译java文件。 稍后检查如何移动类文件。

    该错误确实表明它没有找到所需的类,所以jar没有正确添加到类路径中。 检查这个

    javac -classpath .:/usr/share/tomcat7/servlet-api.jar src/com/example/*.java
    

    确保罐子存在于给定的位置。 也可以尝试从src文件夹运行此命令,并将路径作为com / example / *。java


    我会尝试使用-classpath而不是-cp 。 javac的Ubuntu手册页不指示-cp选项。 您还可以添加-verbose以从javac获取更多输出。

    注意:我的Mac上的javac实现不同意,但我不在Ubuntu的机器atm上。

    链接地址: http://www.djcxy.com/p/73815.html

    上一篇: Compiling a Servlet in Ubuntu returns errors

    下一篇: How was Object class generated?