2016-07-24 12 views
0

He、TomcatでSpringブートウォーファイルが動作しない

これはしばらく私を悩ませていたので、私はMWEを作った。私はSpring-Bootアプリケーションを作成し、warファイルに変換します。ビルドはmavenで行います。私はローカルマシン上で問題なく動作させることができますが、私のホストマシンのマシンでは毎回クラッシュします。スタックトレース:

24-Jul-2016 11:42:03.906 SEVERE [localhost-startStop-8] org.apache.catalina.core.ContainerBase.addChildInternal ContainerBase.addChild: start: 
org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/blub-1.0-SNAPSHOT]] 
    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.access$000(ContainerBase.java:131) 
    at org.apache.catalina.core.ContainerBase$PrivilegedAddChild.run(ContainerBase.java:153) 
    at org.apache.catalina.core.ContainerBase$PrivilegedAddChild.run(ContainerBase.java:143) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:699) 
    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:1798) 
    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.security.AccessControlException: access denied ("java.io.FilePermission" "./config/application.properties" "read") 
    at java.security.AccessControlContext.checkPermission(AccessControlContext.java:472) 
    at java.security.AccessController.checkPermission(AccessController.java:884) 
    at java.lang.SecurityManager.checkPermission(SecurityManager.java:549) 
    at java.lang.SecurityManager.checkRead(SecurityManager.java:888) 
    at java.io.File.exists(File.java:814) 
    at org.springframework.core.io.AbstractFileResolvingResource.exists(AbstractFileResolvingResource.java:93) 
    at org.springframework.boot.context.config.ConfigFileApplicationListener$Loader.loadIntoGroup(ConfigFileApplicationListener.java:459) 
    at org.springframework.boot.context.config.ConfigFileApplicationListener$Loader.load(ConfigFileApplicationListener.java:449) 
    at org.springframework.boot.context.config.ConfigFileApplicationListener$Loader.load(ConfigFileApplicationListener.java:374) 
    at org.springframework.boot.context.config.ConfigFileApplicationListener.addPropertySources(ConfigFileApplicationListener.java:210) 
    at org.springframework.boot.context.config.ConfigFileApplicationListener.postProcessEnvironment(ConfigFileApplicationListener.java:179) 
    at org.springframework.boot.context.config.ConfigFileApplicationListener.onApplicationEnvironmentPreparedEvent(ConfigFileApplicationListener.java:166) 
    at org.springframework.boot.context.config.ConfigFileApplicationListener.onApplicationEvent(ConfigFileApplicationListener.java:152) 
    at org.springframework.context.event.SimpleApplicationEventMulticaster.invokeListener(SimpleApplicationEventMulticaster.java:166) 
    at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:138) 
    at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:121) 
    at org.springframework.boot.context.event.EventPublishingRunListener.publishEvent(EventPublishingRunListener.java:111) 
    at org.springframework.boot.context.event.EventPublishingRunListener.environmentPrepared(EventPublishingRunListener.java:65) 
    at org.springframework.boot.SpringApplicationRunListeners.environmentPrepared(SpringApplicationRunListeners.java:54) 
    at org.springframework.boot.SpringApplication.createAndRefreshContext(SpringApplication.java:330) 
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:307) 
    at org.springframework.boot.context.web.SpringBootServletInitializer.run(SpringBootServletInitializer.java:149) 
    at org.springframework.boot.context.web.SpringBootServletInitializer.createRootApplicationContext(SpringBootServletInitializer.java:129) 
    at org.springframework.boot.context.web.SpringBootServletInitializer.onStartup(SpringBootServletInitializer.java:85) 
    at org.springframework.web.SpringServletContainerInitializer.onStartup(SpringServletContainerInitializer.java:169) 
    at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5170) 
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) 
    ... 14 more 

ブートファイルだけ

import org.springframework.boot.SpringApplication; 
import org.springframework.boot.autoconfigure.SpringBootApplication; 
import org.springframework.boot.builder.SpringApplicationBuilder; 
import org.springframework.boot.context.web.SpringBootServletInitializer; 

@SpringBootApplication 
public class Boot extends SpringBootServletInitializer { 
    public static void main(final String[] args) { 
     SpringApplication.run(Boot.class, args); 
    } 

    @Override 
    protected SpringApplicationBuilder configure(SpringApplicationBuilder application) { 
     return application.sources(Boot.class); 
    } 
} 

とのpom.xmlを完了するためにある:http://pastebin.com/bKZt9tWy

奇妙なことがある:上のどこにもapplication.propertiesありません機械。だから...すべての答え、ポインタだけでもおかげでたくさんありがとう。

答えて

0

問題は、ユーザーがフォルダ./config/application.propertiesに対して読み取り権限を持っていないことです。

デフォルトでは、スプリングブートは一部の場所からプロパティをロードしようとし、./config/application.propertiesはその場所の1つです。 the docs

簡単な修正は、ユーザーに読み取りを許可することです。もう1つの方法は、ドキュメントで指定されているデフォルトの場所を上書きすることです。

+0

フォルダ./config/がありません。ファイルapplication.propertiesはありません。 – julian

+4

@julianそれは問題ではありません。 Spring Bootは、その場所のファイルが存在し、Tomcatインスタンスのセキュリティポリシーがそれを禁止しているかどうかをチェックしようとしています。 –

関連する問題