【发布时间】:2015-08-11 09:00:59
【问题描述】:
首先,我对 Maven、Tomcat 和 Java 都一无所知。
我有一个 .war 文件,其中包含一个网页和一个安装在 Mac (Yosemite) 中的 Tomcat 8 服务器。位于/Library/Tomcat/webapps/wm-admin-ui.war。
我还安装了 Maven (v3),并使用 tomcat 用户进行了配置。
我需要在显然打算由某些 Maven 插件部署的 Tomcat 服务器中运行 .war。我发现了这一点,因为 META-INF 中有一个 maven 目录,并且通常的部署根本不起作用。参考下图。
事实是,
- 如何在 tomcat 8 中安装 maven 插件? (我已经查过谷歌)
- “部署”是“运行”的同义词吗?
'/Library/Tomcat/webapps/wm-admin-ui'的目录结构:
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";
}
【问题讨论】:
-
Tomcat启动时有什么错误吗?如果是,请告诉我们。
-
我已经在寻找它,但理所当然地认为我对这样的环境了解很多。不过还是谢谢。
-
似乎带有方法
getSwaggerBasePath的类com.toro.wm.configurations.WmWebApplicationInitializer在加载某些属性文件时存在问题。在此类WmWebApplicationInitializer.java:86中检查此行。似乎您还没有部署关键文件,并且当应用程序初始化上下文时它需要该文件。 -
把你所有的属性放到WEB-INF/classes里试试
标签: maven tomcat tomcat8 maven-tomcat-plugin