【问题标题】:java.lang.IllegalArgumentException: Document base dir does not exist or is not a readable directoryjava.lang.IllegalArgumentException:文档库目录不存在或不是可读目录
【发布时间】:2014-11-12 06:02:39
【问题描述】:

我在 stackoverflow 中看到过类似的问题,但这些问题对我没有帮助。我想从 Tomcat 外部运行我的应用程序,所以我使用了 Tomcat 的“上下文”。 在上下文中,我给出了docBase,如下所示。

<Context docBase="../IdP/IdPserver/idp" // which is relative path
         privileged="true"
         antiResourceLocking="false"
         antiJARLocking="false"
         unpackWAR="false" />

实际位置(绝对路径)是D://SRDM2.3/srdm/svr//IdP/IdPserver/idp。但它不适用于相对路径,而是使用绝对路径。 使用相对路径时出现以下错误。

SEVERE: Error starting static Resources
java.lang.IllegalArgumentException: Document base D:\SDC-Builds\SRDM2.3.0.6904.10\SRDM\Svr\tomcat\webapps\..\IdP\IdPserver\idp does not exist or is not a readable directory
    at org.apache.naming.resources.FileDirContext.setDocBase(FileDirContext.java:142)
    at org.apache.catalina.core.StandardContext.resourcesStart(StandardContext.java:4324)
    at org.apache.catalina.core.StandardContext.start(StandardContext.java:4493)
    at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:799)
    at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:779)
    at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:583)
    at org.apache.catalina.startup.HostConfig.deployDescriptor(HostConfig.java:675)
    at org.apache.catalina.startup.HostConfig.deployDescriptors(HostConfig.java:601)
    at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:502)
    at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1317)
    at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:324)
    at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:142)
    at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1065)
    at org.apache.catalina.core.StandardHost.start(StandardHost.java:822)
    at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1057)
    at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:463)
    at org.apache.catalina.core.StandardService.start(StandardService.java:525)
    at org.apache.catalina.core.StandardServer.start(StandardServer.java:754)
    at org.apache.catalina.startup.Catalina.start(Catalina.java:595)
    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:289)
    at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:414)

【问题讨论】:

  • 您在相对路径中缺少一些 ../.. 表示上一个目录)
  • 你的 java 类路径是什么?

标签: java tomcat relative-path


【解决方案1】:

你认为实际:

D://SRDM2.3/srdm/svr//IdP/IdPserver/idp

和失踪一样吗?

D:\SDC-Builds\SRDM2.3.0.6904.10\SRDM\Svr\tomcat\webapps\..\IdP\IdPserver\idp

解决第二个中的.. 导致

D:\SDC-Builds\SRDM2.3.0.6904.10\SRDM\Svr\tomcat\IdP\IdPserver\idp

你还需要另一个..,所以试试这个:

<Context docBase="../../IdP/IdPserver/idp"

【讨论】:

  • 其实它不应该进入tomcat文件夹,我的预期路径是D:/SRDM2.3.0.6904.10/SRDM/Svr/IdP/IdPserver/idp
  • @majji 没错。请参阅我的答案末尾的建议。如果你使用它,它不会进入 Tomcat 文件夹。
  • 感谢@icza 的帮助,这部分工作正常,但我不知道为什么我无法在 tomcat 中启动 idp。
  • 您好@icza,请查看与此相对路径相关的stackoverflow.com/questions/26887190/…,它完全占用了我的时间,希望我能从您那里得到一个好的解决方案。
  • hello @icza 我已经使用了上述概念,但对我来说它就像 D:\SDC-Builds\SRDM2.3.0.6904.10\SRDM\Svr\tomcat\..\..\IdP \IdPserver\metadata\idp-metadata.xml 不存在,如何解决?
猜你喜欢
  • 2012-06-11
  • 1970-01-01
  • 1970-01-01
  • 2014-10-24
  • 2015-12-20
  • 2020-04-16
  • 2013-10-02
  • 2017-01-12
  • 2012-01-02
相关资源
最近更新 更多