我需要读取Manifest传递我的课程的文件,但是当我使用时:
getClass().getClassLoader().getResources(...)
Run Code Online (Sandbox Code Playgroud)
我MANIFEST从第一次.jar加载到Java Runtime.
我的应用程序将从小程序或webstart运行,
因此.jar我猜我无法访问自己的文件.
我实际上想要读取启动Felix OSGi 的Export-package属性.jar,所以我可以将这些包暴露给Felix.有任何想法吗?
我需要获得一些配置并连接到某处的外部资源/对象/系统并将其存储在应用程序范围内.
我可以看到两种设置应用程序的方法:
init()现有的servlet和所需的代码,并将所有构造的对象保留在同一个servlet中.init()来完成工作.然后存储创建的对象ServletContext以与其他servlet共享.以上哪种方法更好?有没有更好的方法在servlet之间共享对象?直接从彼此调用它们......?
我想在我的Java应用程序(在本例中为Vaadin Portlet)中添加版本编号,其中包含帮助视图中的版本号.
问题是该版本号是我的Maven的POM文件中定义的版本号(例如1.1.5-SNAPSHOT),这是我们要更改的版本号(例如发布时).
关于如何从POM中获取它并使用Java(例如,String)的任何想法?(如果可能的话)
谢谢
如何在运行Tomcat时获取软件包版本?
我尝试getClass().getPackage().getImplementationVersion()但这总是返回null.我想这是因为我的战争尚未打包,Tomcat执行.classes(又名爆炸战争).
META-INF\MANIFEST.MF在最后的战争中存在,但不在target\<project.name>\META-INF文件夹中
包对象包含有关Java包的实现和规范的版本信息.检索此版本控制信息,并由加载类的ClassLoader实例提供.通常,它存储在随类分发的清单中.
UPDATE.在我已经为war build添加配置之前.但是当我从Eclipse运行Tomcat时,我得到了null.
<plugin>
<artifactId>maven-war-plugin</artifactId>
<version>2.1</version>
<configuration>
<archive>
<manifest>
<addDefaultImplementationEntries>true</addDefaultImplementationEntries>
<addDefaultSpecificationEntries>true</addDefaultSpecificationEntries>
</manifest>
</archive>
<!-- this actually moves classes from \WEB-INF\classes to new jar
<archiveClasses>true</archiveClasses>
-->
</configuration>
</plugin>
Run Code Online (Sandbox Code Playgroud) 我试图在Java servlet中读取自己的MANIFEST.MF资源.我的情况:我在EAR中有一个WAR(带有我想要阅读的清单).EAR中还有其他几个WAR和JAR.类路径真的很长.
我尝试了Web中的几种方法,包括StackOverflow.
我可以使用读取所有MANIFEST.MF文件
this.getClass().getClassLoader().getResources("META-INF/MANIFEST.MF");
Run Code Online (Sandbox Code Playgroud)
并遍历它们.但是,我不知道哪一个是我的 - 我甚至不知道Implementation-Title,因为这是由构建管道生成的.(我可以通过构建管道的知识来猜测,因此我知道正确的清单就在那里.但是,我无法猜测生产代码.)
当然,
this.getClass().getClassLoader().getResourceAsStream("META-INF/MANIFEST.MF");
Run Code Online (Sandbox Code Playgroud)
从类路径上的其他jar返回一个完全错误的清单.
我也试过了
this.getServletContext().getResourceAsStream("META-INF/MANIFEST.MF");
Run Code Online (Sandbox Code Playgroud)
但它返回null.
如何访问属于包含当前运行的servlet的WAR的MANIFEST.MF文件?
java ×5
manifest.mf ×3
servlets ×3
maven ×2
apache-felix ×1
data-sharing ×1
eclipse ×1
osgi ×1
pom.xml ×1
tomcat ×1
war ×1