我正在尝试编译要在网络应用程序中使用的源代码。我知道 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
文件直接发送到合适的目录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/classes,/usr/lib/jvm/java-7-openjdk-i386/jre/lib/ext/localedata.jar,/usr/lib/jvm/java-7-openjdk-i386/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/jvm/java-7-openjdk-i386/jre/lib/ext/pulse-java.jar,/usr/lib/jvm/java-7 -openjdk-i386/jre/lib/ext/sunpkcs11.jar,/usr/lib/jvm/java-7-openjdk-i386/jre/lib/ex t/zipfs.jar,.,/usr/share/tomcat7/servlet-api.jar]
最佳答案
将任务分成几部分,让我们先尝试编译 java 文件。稍后检查如何移动类文件。
错误确实表明它没有找到所需的类,因此 jar 没有正确添加到类路径中。检查这个
javac -classpath .:/usr/share/tomcat7/servlet-api.jar src/com/example/*.java
确保 jar 出现在给定位置。还可以尝试从 src 文件夹运行它,并将路径指定为 com/example/*.java
关于java - 在 Ubuntu 中编译 Servlet 返回错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15082890/