我有一个包含清单文件的webapp,在执行蚂蚁构建任务时,我在其中写入应用程序的当前版本。清单文件已正确创建,但是在运行时尝试读取清单文件时,会出现一些奇怪的副作用。我在清单中读取的代码是这样的:
InputStream manifestStream = Thread.currentThread()
.getContextClassLoader()
.getResourceAsStream("META-INFFFF/MANIFEST.MF");
try {
Manifest manifest = new Manifest(manifestStream);
Attributes attributes = manifest.getMainAttributes();
String impVersion = attributes.getValue("Implementation-Version");
mVersionString = impVersion;
}
catch(IOException ex) {
logger.warn("Error while reading version: " + ex.getMessage());
}
当我将eclipse附加到tomcat时,我看到上面的代码起作用了,但是它似乎得到了与我期望的清单文件不同的清单文件,由于蚂蚁版本和构建时间戳都不同,所以我可以看出来。然后,我将“ META-INFFFF”放入其中,上面的代码仍然有效!这意味着我正在阅读其他清单,而不是我的清单。我也试过
this.getClass().getClassLoader().getResourceAsStream(...)
但是结果是一样的。从tomcat中运行的Webapp内部读取清单文件的正确方法是什么?
编辑:谢谢到目前为止的建议。另外,我要指出,我正在运行Tomcat独立; 我从命令行启动它,然后将其附加到Eclipse调试器中正在运行的实例。那不应该有所作为,不是吗?
也许你的副作用来自几乎所有jar都包含MANIFEST.MF的事实,而你没有得到正确的jar。要从Web应用程序读取MANIFEST.MF,我会说:
ServletContext application = getServletConfig().getServletContext();
InputStream inputStream = application.getResourceAsStream("/META-INF/MANIFEST.MF");
Manifest manifest = new Manifest(inputStream);
请注意,由于Eclipse与类加载器一起运行,因此从Eclipse运行Tomcat不同于单独运行Tomcat。
我在包'\src\main\resources\'中有一个文件。我希望在位于'src\main\java\com\xxxx\xxxx\services\'的。java文件中读取该文件。当我运行以下代码时, 我将USER_DIRECTORY的值设置为'C:\workspace\apache-tomcat-7.0.70\bin',将DOCUMENT_DIRECTORY的值设置为'C:\workspac
问题内容: 我想使用html applet标记在我的Web应用程序中运行简单applet,但是它给出了类似的错误 java.lang.ClassNotFoundException:MyApplet 请给我示例应用程序,如果可能的话..... 问题答案: 问题是applet引擎在您定义的代码库中找不到MyApplet类。 这是因为您在/ WEB-INF / classes目录中进行了分类。该目录受s
我正在读取google appengine应用程序中文件夹(/war/config/client.properties)中的属性文件。它在我的本地服务器上运行良好,但在生产模式下不工作,并且抛出异常java。安全AccessControlException:拒绝访问(java.io.FilePermission)。 你能告诉我如何在生产模式下工作吗。
问题内容: 有没有人找到一种在IIS中运行Java Web应用程序的方法?在我看来,完全有可能编写一个ISAPI插件(对吗?),该插件将Jetty或自定义servlet容器与IIS集成在一起。这样做的好处是,许多出色的高端Java应用程序(如Jira)需要用于其他所有Microsoft商店的单独基础结构。 问题答案: 我认为您会发现使用以下两篇文章 使用Microsoft的Internet Inf
我正在尝试为 eclipse 中的 gradle 多 Web 应用程序应用程序设置一个开发环境。该应用程序部署在码头上的生产环境中,因此这就是我想要在开发中使用的应用程序。我在让eclipse运行所有Web应用程序并能够调试时遇到问题。 我能够找到的解决方案在线使用只能运行单个webapps的插件。或者他们通过服务器中的gradle(gretty)运行webapps,然后导致调试问题。 我的来源是
我有两个k8s吊舱在运行。每个吊舱内都有一个单独的容器。我的应用程序将在每个容器中运行。我想从Pod1中的应用程序直接向Pod2中的应用进行HTTP调用。 假设我在集群外部保存了某种持久性存储。所以我的逻辑是这样的。 如何从我的应用程序中获取此IP地址。我正在使用Java(播放框架)。