为啥我得到错误的清单? [复制]

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 的行为。

以上是关于为啥我得到错误的清单? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

为啥我在这里得到微调器的空引用错误? [复制]

为啥我得到表达式必须有类类型错误? [复制]

错误:WatchActivity 无法解析为一种类型,为啥我会得到这个? [复制]

为啥我收到此代码的错误? [复制]

为啥我的 C++ 代码中出现链接器命令失败错误? [复制]

Calendar.setTimeInMillis 错误 - 为啥会这样? [复制]