使用JNLP运行Tomcat中的ClassNotFoundException

时间:2018-07-01 14:04:34

标签: java spring maven tomcat

我正在尝试通过JNLP启动Tomcat,以允许我们的用户远程启动Web应用程序。

Maven POM文件具有以下依赖性:

...
<dependency> 
<groupId>org.apache.tomcat.embed</groupId> 
<artifactId>tomcat-embed-jasper</artifactId> 
<version>8.5.32</version> 
</dependency> 

JNLP文件如下:

  ...
  <security>
      <all-permissions/>
  </security>
  <resources>
    <j2se version="1.8+"/>
    <jar href="app.jar"/>
  </resources>
  <application-desc main-class="com.myapp.Main"/>

app.jar 包含所有Maven依赖关系中的所有类。通过JNLP启动时,出现以下异常:

  

2018年7月1日晚上7:18:59 org.apache.catalina.core.StandardService   startInternal INFO:启动服务[Tomcat] 2018年7月1日晚上7:18:59   org.apache.catalina.core.StandardEngine start内部信息:正在启动   Servlet引擎:Apache Tomcat / 8.5.32 2018年7月1日晚上7:18:59   org.apache.catalina.startup.ContextConfig getDefaultWebXmlFragment   信息:找不到全局web.xml 2018年7月1日晚上7:18:59   org.apache.catalina.core.ApplicationContext日志信息:标记servlet   [jsp]无效,2018年7月1日晚上7:18:59   org.apache.catalina.core.StandardContext loadOnStartup严重:Servlet   Web应用程序中的[jsp]抛出load()异常   java.lang.ClassNotFoundException:org.apache.jasper.servlet.JspServlet     在   org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1309)     在   org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1137)     在   org.apache.catalina.core.DefaultInstanceManager.loadClass(DefaultInstanceManager.java:546)     在   org.apache.catalina.core.DefaultInstanceManager.loadClassMaybePrivileged(DefaultInstanceManager.java:527)     在   org.apache.catalina.core.DefaultInstanceManager.newInstance(DefaultInstanceManager.java:150)     在   org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1044)     在   org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:983)     在   org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:4978)     在   org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5290)     在   org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)     在   org.apache.catalina.core.ContainerBase $ StartChild.call(ContainerBase.java:1421)     在   org.apache.catalina.core.ContainerBase $ StartChild.call(ContainerBase.java:1411)     在java.util.concurrent.FutureTask.run(未知来源)   java.util.concurrent.ThreadPoolExecutor.runWorker(未知源),位于   java.util.concurrent.ThreadPoolExecutor $ Worker.run(未知源)   java.lang.Thread.run(未知来源)

我已经检查过罐子里有没有。这也得到了证明,因为以下程序运行良好:

java -jar app.jar com.myapp.Main

Main 类如下:

 public static void main(String[] args){
        Tomcat tomcat = new Tomcat();
        String baseDir = createTempDir();
        tomcat.setBaseDir(baseDir);
        tomcat.setPort(9000);
        tomcat.getHost().setAppBase(".");
        tomcat.addWebapp("", ".");
        tomcat.start();
        tomcat.getServer().await();
        System.out.println("Done");
}

任何帮助将不胜感激。您在这里看不到任何真正的webapp文件夹,因为我试图使用 AbstractAnnotationConfigDispatcherServletInitializer

运行Spring

0 个答案:

没有答案