为啥我得到错误的清单? [复制]
Posted
技术标签:
【中文标题】为啥我得到错误的清单? [复制]【英文标题】:Why am I getting the wrong MANIFEST? [duplicate]为什么我得到错误的清单? [复制] 【发布时间】:2014-12-20 17:47:57 【问题描述】:我正在尝试访问我的 java 应用程序中的 MANIFEST.MF 文件。
我正在做以下事情
//prints /usr/local/apache-tomcat-8.0.9/webapps/MyProject/WEB-INF/lib/activation-1.1.jar!/META-INF/MANIFEST.MF
System.out.println( "We are looking at "+this.getClass().getClassLoader()
.getResource("META-INF/MANIFEST.MF"));`
//Im looking to print /usr/local/apache-tomcat-8.0.9/webapps/MyProject/META-INF/MANIFEST.MF
//prints-/usr/local/apache-tomcat-8.0.9/lib/
System.out.println("The base path is"+this.getClass().getClassLoader()
.getResource("."));
这是目录结构
MyProject
-src/main/java/my/packages/MyClass.java
-target
-MyProject.war
任何关于如何纠正我的代码的想法都会很棒。
我的战争目录结构
Myproject
META-INF apidocs other folders
WEB-INF
【问题讨论】:
MyProject.war 的目录结构是什么? @JigarJoshi:添加目录结构 @Kroyo。我做的和答案完全一样,面临这个问题。 当你启动应用程序时,你的类路径是什么样子的 / @JigarJoshi.:我不太明白你的意思。我打印出来的基本路径中没有回答您的问题吗?或者您正在寻找不同的东西? 【参考方案1】:你需要使用 ServletContext.getResourceAsStream
我发现类加载器方法对于网络应用程序上的 MANIFEST 文件并不可靠。
如果你的清单是由你的构建过程生成的,如果你从 maven 或 eclipse wtp 运行你的应用程序,它也不会可靠地工作。
问题的真实副本:How do I read the manifest file for a webapp running in apache tomcat?
【讨论】:
您有代码 sn-p 来备份吗?我没有使用网络应用程序。我可以访问 ServletContext 吗? 为什么你的例子中有tomcat路径?我稍后会发布代码(目前在手机上)。 这是this.getClass().getClassLoader()
的结果,应该返回当前类的绝对路径
我的清单是由 maven 自动生成的。那么我有什么选择呢?
你是如何执行这个项目的?看起来tomcat仍在运行您的代码。顺便说一句,当我指的是 webapp 时,我的意思是您的代码正在像 tomcat 这样的 servlet 容器中运行,即使它没有类似 webapp 的行为。以上是关于为啥我得到错误的清单? [复制]的主要内容,如果未能解决你的问题,请参考以下文章