2012-02-12 65 views
1

我想測試一個小的應用程序,可以讀取我的文件系統中的特定目錄。 當在tomcat中使用eclipse時,它可以正常工作,但是當我嘗試在已安裝的tomcat.7的wepApps目錄中部署war時,它可悲地崩潰(請參閱下面的異常)。我還在catalina.policy中添加了對我的應用程序的許可,但沒有任何更改。面對與tomcat的部署問題

權限:

//the permission used to grant read/write to test directory for readSystemFile 
grant codeBase "file:${catalina.base}/webapps/readSystemFile/WEB-INF/classes/-" { 
    permission java.io.FilePermission 
     "D:/home/dev/test/*", "read, write"; 
}; 

例外:

GRAVE: Exception fixing docBase for context [/readSystemFile] 
java.io.FileNotFoundException: C:\Program Files\Apache Software Foundation\Tomcat 7.0\webapps\readSystemFile\META-INF\MANIFEST.MF (Le chemin d’accès spécifié est introuvable) 
    at java.io.FileOutputStream.open(Native Method) 
    at java.io.FileOutputStream.<init>(Unknown Source) 
    at java.io.FileOutputStream.<init>(Unknown Source) 
    at org.apache.catalina.startup.ExpandWar.expand(ExpandWar.java:403) 
    at org.apache.catalina.startup.ExpandWar.expand(ExpandWar.java:138) 
    at org.apache.catalina.startup.ContextConfig.fixDocBase(ContextConfig.java:721) 
    at org.apache.catalina.startup.ContextConfig.init(ContextConfig.java:844) 
    at org.apache.catalina.startup.ContextConfig.lifecycleEvent(ContextConfig.java:334) 
    at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119) 
    at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:89) 
    at org.apache.catalina.util.LifecycleBase.setStateInternal(LifecycleBase.java:379) 
    at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:107) 
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:136) 
    at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:812) 
    at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:787) 
    at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:607) 
    at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:932) 
    at org.apache.catalina.startup.HostConfig.deployWARs(HostConfig.java:723) 
    at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:470) 
    at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1322) 
    at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:311) 
    at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119) 
    at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:89) 
    at org.apache.catalina.util.LifecycleBase.setStateInternal(LifecycleBase.java:379) 
    at org.apache.catalina.util.LifecycleBase.setState(LifecycleBase.java:324) 
    at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:1041) 
    at org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:774) 
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:145) 
    at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:1033) 
    at org.apache.catalina.core.StandardEngine.startInternal(StandardEngine.java:291) 
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:145) 
    at org.apache.catalina.core.StandardService.startInternal(StandardService.java:443) 
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:145) 
    at org.apache.catalina.core.StandardServer.startInternal(StandardServer.java:727) 
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:145) 
    at org.apache.catalina.startup.Catalina.start(Catalina.java:620) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) 
    at java.lang.reflect.Method.invoke(Unknown Source) 
    at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:303) 
    at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:431) 
12 févr. 2012 15:35:25 org.apache.catalina.core.StandardContext postWorkDirectory 
ATTENTION: Failed to create work directory [C:\Program Files\Apache Software Foundation\Tomcat 7.0\work\Catalina\localhost\readSystemFile] for context [/readSystemFile] 
12 févr. 2012 15:35:25 org.apache.catalina.loader.WebappLoader startInternal 
GRAVE: LifecycleException 
java.io.IOException: Failed to create destination directory to copy resources 
    at org.apache.catalina.loader.WebappLoader.setRepositories(WebappLoader.java:888) 
    at org.apache.catalina.loader.WebappLoader.startInternal(WebappLoader.java:603) 
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:145) 
    at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5079) 
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:145) 
    at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:812) 
    at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:787) 
    at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:607) 
    at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:932) 
    at org.apache.catalina.startup.HostConfig.deployWARs(HostConfig.java:723) 
    at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:470) 
    at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1322) 
    at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:311) 
    at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119) 
    at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:89) 
    at org.apache.catalina.util.LifecycleBase.setStateInternal(LifecycleBase.java:379) 
    at org.apache.catalina.util.LifecycleBase.setState(LifecycleBase.java:324) 
    at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:1041) 
    at org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:774) 
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:145) 
    at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:1033) 
    at org.apache.catalina.core.StandardEngine.startInternal(StandardEngine.java:291) 
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:145) 
    at org.apache.catalina.core.StandardService.startInternal(StandardService.java:443) 
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:145) 
    at org.apache.catalina.core.StandardServer.startInternal(StandardServer.java:727) 
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:145) 
    at org.apache.catalina.startup.Catalina.start(Catalina.java:620) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) 
    at java.lang.reflect.Method.invoke(Unknown Source) 
    at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:303) 
    at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:431) 
12 févr. 2012 15:35:25 org.apache.catalina.core.ContainerBase addChildInternal 
GRAVE: ContainerBase.addChild: start: 

回答

0

我會建議增加一個清單文件旁邊,因爲這就是例外抱怨。

0

你用什麼來打包war文件?它看起來像你使用的任何程序不是創建所需的清單文件(也可能是其他文件)。嘗試使用eclipse的導出功能或使用ant。

+0

我已經使用Eclipse導出,並且我已經檢查了清單存在於戰爭中。但它的內容是:Manifest-Version:1.0 Class-Path: – ndongo 2012-02-12 18:46:42

0

我有類似的問題。很可能這是一個錯誤的權限設置。