maven - 在 TOMCAT 8 中运行(部署?) "maven".war

标签 maven tomcat tomcat8 maven-tomcat-plugin

首先,我对 Maven、Tomcat 或 Java 一无所知。

我有一个 .war 文件,其中包含一个网页和一个安装在 Mac (Yosemite) 中的 Tomcat 8 服务器。位于 /Library/Tomcat/webapps/wm-admin-ui.war。 我还安装了 Maven (v3) 并配置了一个 tomcat 用户。

我需要在 Tomcat 服务器中运行 .war,该服务器显然打算由某些 Maven 插件部署。我想通了这一点,因为在 META-INF 中有一个 maven 目录,而通常的部署根本不起作用。请参阅下图作为引用。

事情是,

  • 如何在 tomcat 8 中安装 maven 插件? (我已经查过谷歌)
  • “部署”是“运行”的同义词吗?

“/Library/Tomcat/webapps/wm-admin-ui”的目录结构:

enter image description here

catalina.out 日志中的错误:

11-Aug-2015 10:23:43.128 INFO [localhost-startStop-1] org.apache.jasper.servlet.TldScanner.scanJars Al menos un JAR, que se ha explorado buscando TLDs, aún no contenía TLDs. Activar historial de depuración para este historiador para una completa lista de los JARs que fueron explorados y de los que nos se halló TLDs. Saltarse JARs no necesarios durante la exploración puede dar lugar a una mejora de tiempo significativa en el arranque y compilación de JSP .
11-Aug-2015 10:23:43.360 SEVERE [localhost-startStop-1] org.apache.catalina.core.ContainerBase.addChildInternal ContainerBase.addChild: start: 
 org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/wm-admin-ui]]
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:154)
    at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:725)
    at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:701)
    at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:717)
    at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:945)
    at org.apache.catalina.startup.HostConfig$DeployWar.run(HostConfig.java:1768)
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
    at java.util.concurrent.FutureTask.run(FutureTask.java:266)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    at java.lang.Thread.run(Thread.java:745)
Caused by: java.lang.NullPointerException
    at java.util.Properties$LineReader.readLine(Properties.java:434)
    at java.util.Properties.load0(Properties.java:353)
    at java.util.Properties.load(Properties.java:341)
    at com.toro.wm.configurations.WmWebApplicationInitializer.getSwaggerBasePath(WmWebApplicationInitializer.java:86)
    at com.toro.wm.configurations.WmWebApplicationInitializer.onStartup(WmWebApplicationInitializer.java:70)
    at org.springframework.web.SpringServletContainerInitializer.onStartup(SpringServletContainerInitializer.java:175)
    at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5156)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
    ... 10 more

11-Aug-2015 10:23:43.362 SEVERE [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployWAR Error durante el despliegue del archivo /Users/r01010010/Develop/apache-tomcat-8.0.24/webapps/wm-admin-ui.war de la aplicación web
 java.lang.IllegalStateException: ContainerBase.addChild: start: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/wm-admin-ui]]
    at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:729)
    at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:701)
    at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:717)
    at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:945)
    at org.apache.catalina.startup.HostConfig$DeployWar.run(HostConfig.java:1768)
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
    at java.util.concurrent.FutureTask.run(FutureTask.java:266)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    at java.lang.Thread.run(Thread.java:745)

这是通过错误的代码:

private String getSwaggerBasePath() {
    InputStream is = getClass().getResourceAsStream("/swagger.properties");
    Properties properties = new Properties();
    try {
        properties.load(is);
        is.close();
    } catch (IOException e) {
        LOGGER.error("Failed to handle stream for swagger.properties file ", e);
    }

    String context = properties.getProperty("swagger.base_path", "");

    return (StringUtils.isEmpty(context) ? "" : context) + "/wm-admin-ui/rest";
}

最佳答案

似乎带有方法 getSwaggerBasePath 的类 com.toro.wm.configurations.WmWebApplicationInitializer 在加载某些属性文件时出现问题。

检查此类 WmWebApplicationInitializer.java:86 中的这一行。似乎您还没有部署关键文件,当应用程序初始化上下文时它需要该文件。

第二个问题是您需要将所有属性放在路径 WEB-INF/classes 中。

现在一切正常。

关于maven - 在 TOMCAT 8 中运行(部署?) "maven".war,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31937458/

相关文章:

java - 下面的java代码正确的pom依赖是什么?

java - SpEL getValue() 函数随时间变慢

regex - Maven 替换插件,正则表达式不起作用

java - 使用 Selenium、Maven、Browsermob 和 Browserstack 通过 Har 文件提取网络请求

java - Tomcat maxthreads,我做错了什么吗?

tomcat 配置为不遵守证书的扩展 key 使用

java - (java.net.SocketException) 在处理请求 : Connection reset by peer: socket write error 时被捕获

java - Jersey 2.x 和 Tomcat8 返回 NullPointerException,HTTP 状态 500

java - 如何在子 pom 中使用父 pom 的配置文件属性?

maven - 每个 svn trunk 是否有一个(多模块)maven 项目