Java 在Ubuntu中编译Servlet会返回错误

Java 在Ubuntu中编译Servlet会返回错误,java,bash,servlets,ubuntu,classpath,Java,Bash,Servlets,Ubuntu,Classpath,我正在尝试编译用于webapp的源代码。我知道Ubuntu中的东西不像Windows中的东西,永久设置classpath不是一件好事,所以我决定暂时设置这个标志。这是我在终端中的命令: littlejavachild@ubuntu:~/LittleJavaChild/ServletProjects/beerV1$javac-cp”/usr/share/tomcat7/servlet api.jar“-d classes src/com/example/*.java 我想要达到的目标是: 编译包c

我正在尝试编译用于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
  • .class
    文件直接发送到相应的目录
  • 将classes文件夹复制到
    WEB-INF
    文件夹
  • 尽管设置了
    类路径
    ,我还是得到了错误:

    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////usr/lib/lib///usr/libr/lib/lib/JVR/JVR/JVR/java/java-7-7-7-7-openjdk-7-7-openjdk-7-7-7-7-openjdk-7-i386-i386-7-i386/lib/lib/lib/lib/lib/lib////Resource//Resource//Resource////Resource/资源。jar///Resource//////////resoresoreso资源。Ja7//////////////////////////1/usr/lib/JV/java-7-openjk-7-7-7-7-7-7-7-7-openjjdk-1-7-7-openjdk-1-386/J8-5-5//J8/3/3/J8/7-7/7/JVB/7/JVB/7/JVB/7/JVB/JVB/JVB//////////7/JVR/7/7-7-7-7-7-7-7-7-7-7-7-OpenJJJJJJJJJJJJJJJJJK7-7-5-7-7-7-7-7-7-7-7-7-7-7-7-7-7-7-7-openjdk-7-7-7-7-7-7-7-7-7-7-7-7-7-7-7-7-7-7-Open386/jre/lib/ext/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/jk/i386/jre/lib/ext/pulse java.jar、/usr/lib/jr/lib/jr/jre/jre/jre/jre/jre/jre/jre/jre/jre/jre/jre/jre/jr/jr/jre/jr/jr/jr/jr/jr/jre/jr/jr/jr/jr/jr/jr/jr/jr/jr/jr/jr/jr/

    将任务分成若干位,让我们先尝试编译java文件。稍后检查如何移动类文件

    错误确实表明它没有找到所需的类,因此jar没有正确地添加到类路径中

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

    确保jar位于给定位置。也可以尝试从src文件夹运行它,并将路径设置为com/example/*。java

    我将尝试使用
    -classpath
    而不是
    -cp
    。这并不表示
    -cp
    选项。您还可以添加
    -verbose
    以从
    javac
    获得更多输出


    注释:我的Mac上的Javac实现不同意,但我不在Ubuntu机器ATM上。

    你应该考虑使用像Maven或Ant这样的构建系统。@ RC。我是初学者YO!:PIT实际上通常更容易使用IDE(比如Eclipse)。或者像Ant或Maven这样的构建系统。我想很少有java开发人员真正直接调用
    javac
    。@TimBender我一直被教导,无论何时你学到新东西,你都应该使用文本编辑器和javac。社区成员BalusC认为sameI不同意。我认为你遇到了ubuntu特有的特性。另外,学习
    javac
    对你的专业来说并不是最大的财富。你最好花点精力学习一个构建系统,而不是挣扎于此。+1-我认为你已经根据提供的信息涵盖了OP将遇到的每一个问题。弄明白了。类路径应该是
    -cp.“:/usr/share/java/servlet-api-3.0.jar”
    :/WOW!:/