Tag: manifest.mf

URLClassLoader.addURL(URL)是否遵守META-INF / MANIFEST.MF

如果我有一个jar,其中包含MANIFEST.MF的Class-Path条目。 如果我将jar添加到URLClassLoader ,那么Class-Path条目中的jar也会添加到classloader吗? 我是否需要内省我想要添加到classloader的jar来检测它并为它们中的每一个调用addURL (递归)?

什么是JAR文件的正确内部结构

这是一个非常愚蠢的问题,我无法回答这个问题。 背景。 我正在使用Eclipse(带有一个ANT插件,在XP终端上)。 我刚刚开始玩ANT,在[jar]指令中我设置完成的JAR文件的位置,当我’解压缩’文件时我得到以下内容 META-INF / MANIFEST.MF MyMainFile.class 这与oracle网站上的内部结构一致。 (这里http://docs.oracle.com/javase/tutorial/deployment/jar/view.html ) 但是当我尝试运行我的文件时,我收到了“找不到主类”的错误? 我已经看到其他一些post,人们已经“解压缩”了JAR文件并最终得到了以下结构…… META-INF / MANIFEST.MF dtvcontrol / DTVControlApp.class (从这里http://www.coderanch.com/t/528312/java/java/standalone-application ) 所以我应该得到一个结构,其中我的类文件位于反映包名称的目录中…例如 META-INF / MANIFEST.MF MyPackage / MyMainFile.class 如果是这样,为什么我使用ANT得到错误的结构,或者为什么有2个不同的“正确”内部结构? (如何为每个/控制我得到的东西指定main-class和classpath) 如果您感兴趣,请在MANIFEST文件中声明(使用ANT构建)[attribute name =“Main-Class”value =“MyPackage.MyMainFile”/] 正在开发的包的目录结构如下…… / JavaDev / MyTestPackage / src(包含源文件)// JavaDev / MyTestPackage / bin(包含来自eclipse的类文件,或来自ANT JAVAC任务,我是否将其命名为错误?我应该将其命名为build吗?) 除此之外,当我创建jar时,我没有将其命名为’MyTestPackage.jar’,但只是’test.jar’可能导致问题? 我并不认为我已经很好地理解了[main-class]定义的内容是什么。 除此之外…… ‘MyTestPackage’实际上是我在别处使用的一个小的可视化错误消息库,我有一个第二个文件,它有一个用于测试的主类。 因此它指向各种库(我需要将所有SWT库复制到指定目录吗?) 我已经读过某个地方,如果我将库加载到我的主类(我显然是打开窗口),那么如果我使用它们,尝试运行程序将失败’未找到主类’,添加也是如此在任何’静态最终’成员(我用于错误的登录)。 “静态最终”问题……我试图在ANT中调整类路径,并且我得到了一些其他错误,用于连接到我使用的Log4J和我的’包装器’(与它有关的是一个糟糕的导入),但是库存在应该在类路径中设置的位置)。 我觉得我差不多……但不是很…… […]

用maven隐藏清单条目

使用maven构建jar文件时,它将在META-INF / MANIFEST.MF中创建一个清单文件。 其内容目前是: Manifest-Version: 1.0 Archiver-Version: Plexus Archiver Built-By: Created-By: Apache Maven 3.1.0 Build-Jdk: 1.8.0_5 如何隐藏清单条目? 特别是我想隐藏“Built-By:”条目,因为我没有看到为什么jar应该包含我的用户名的任何理由。

在WAR / JAR / EAR中使用MANIFEST.MF有什么用?

我知道在移动应用程序中使用MANIFEST文件,但我不知道在Java应用程序中使用它。 我的猜测就是说,它只用于保存BUILD信息。 我对么?? 这是强制性的吗?如果没有,那么我们可以用这个获得的主要好处是什么?

java jar的清单属性

在你的帮助下,我能够用java完成我的第一个项目。 现在我想创建一个jar并运行应用程序(Java项目 – 它是一个普通的控制台应用程序,它有另一个项目(控制台应用程序)作为依赖)来自jar。 我通过右键单击创建了一个带有eclipse的jar – export – 创建了一个jar。 当我尝试从我的cmd运行这个jar时,我有一个错误(下面是我正在设置的错误) no main manifest attribute, in AAA.jar 我用Google搜索了错误 – 大多数都是创建清单文件。 我在项目中创建了一个类似于src级别的清单文件,如下所示 Manifest-Version: 1.0 Main-Class: com.Pacakename.mainclass Class-Path: log4j-1.2.16.jar db2jcc.jar db2jcc_license_cu.jar 然后J尝试再次运行jar,但这次它没有说主流方法我在课堂上有一个主方法 请有人请说明创建清单的明确步骤(如果你向我展示我们有Manifest文件的地方的文件夹结构,那真的很有用)

Java Manifest.mf类路径问题

我一直在尝试运行一个jar文件 – 让我们称之为test.jar – 它在Unix系统上使用Sybase jconn3.jar。 我创建了一个MANIFEST.MF文件,其中包含以下内容: Class-Path: $SYBASE/jConnect-6_0/classes/jconn3.jar commons-net-1.3.0.jar 这给出了ClassNotFoundError。 $ SYBASE是指向/ opt / sybase13的系统变量; 我也尝试了以下内容: Class-Path: /opt/sybase13/jConnect-6_0/classes/jconn3.jar commons-net-1.3.0.jar 和 Class-Path: opt/sybase13/jConnect-6_0/classes/jconn3.jar commons-net-1.3.0.jar 但是,如果我将jconn3.jar文件从$ SYBASE / jConnect-6_0 / classes复制到与test.jar相同的目录,并将我的MANIFEST.MF更新为如下所示: Class-Path: jconn3.jar commons-net-1.3.0.jar 应用程序按预期运行。 现在,我已经能够通过在本地复制它来validationjconn3.jar文件的工作原理; 我的MANIFEST.MF文件包含我的Main-Class的路径,所以这里没有问题。 您认为这可能是什么问题? 我一直在看这个东西太久了。 谢谢!

如何在运行Tomcat时获取软件包版本?

如何在运行Tomcat时获取软件包版本? 我尝试getClass()。getPackage()。getImplementationVersion()但这总是返回null 。 我想这是因为我的战争尚未打包,Tomcat执行.classes(又名爆炸战争)。 META-INF\MANIFEST.MF存在于最终战争中,但不存在于target\\META-INF文件夹中 java.lang.Package中 包对象包含有关Java包的实现和规范的版本信息。 检索此版本控制信息,并由加载类的ClassLoader实例提供。 通常,它存储在随类分发的清单中。 相关的是运行时的Get Maven工件版本 UPDATE。 在我已经为war build添加配置之前。 但是当从Eclipse运行Tomcat时,我得到null 。 maven-war-plugin 2.1 true true <!– this actually moves classes from \WEB-INF\classes to new jar true –>

如何在生产中测试和运行jar时创建一个可用的MANIFEST.MF?

我花了太多时间试图解决这个问题。 这应该是最简单的事情,每个在Java中分发Java应用程序的人都必须处理它。 我只是想知道向我的Java应用程序添加版本控制的正确方法,以便我可以在测试时访问版本信息,例如在Eclipse中调试并从jar运行。 这是我在build.xml中的内容: 这创建了/META-INF/MANIFEST.MF,我可以在Eclipse中调试时读取值: public MyClass() { try { InputStream stream = getClass().getResourceAsStream(“/META-INF/MANIFEST.MF”); Manifest manifest = new Manifest(stream); Attributes attributes = manifest.getMainAttributes(); String implementationTitle = attributes.getValue(“Implementation-Title”); String implementationVersion = attributes.getValue(“Implementation-Version”); String builtDate = attributes.getValue(“Built-Date”); String builtBy = attributes.getValue(“Built-By”); } catch (IOException e) { logger.error(“Couldn’t read manifest.”); } } 但是,当我创建jar文件时,它会加载另一个jar的清单(可能是应用程序加载的第一个jar – 在我的例子中,是activation.jar)。 此外,尽管所有正确的值都在清单文件中,但以下代码不起作用。 Package thisPackage […]

将log4.properties类路径放入的问题

我在将log4j.properties文件放在classpath上时遇到了一些问题。 我可以在开发时使用它(Eclipse Indigo)但是,当我将我的应用程序导出为JAR时,我不能。 我已经为导出的JAR手工制作了一个MANIFEST.MF文件: Manifest-Version: 1.0 Main-Class: main.Program Class-Path: lib/log4j.properties lib/log4j-1.2.15.jar 然后将JAR放在此文件组织上: folder |——– app.jar |——– lib |——— log4j.properties |——— log4j-1.2.15.jar 当我尝试运行app.jar时,他们找到log4j.jar但不是log4j.properties: log4j:WARN No appenders could be found for logger (main.Program). log4j:WARN Please initialize the log4j system properly. 我的log4j.properties文件是这样的: log4j.rootLogger=INFO, stdout, file PATTERN=[%d] [%p] [%c{1}]: %m%n log4j.appender.stdout=org.apache.log4j.ConsoleAppender log4j.appender.stdout.layout=org.apache.log4j.PatternLayout log4j.appender.stdout.layout.ConversionPattern=${PATTERN} log4j.appender.file=org.apache.log4j.DailyRollingFileAppender log4j.appender.file.DatePattern=’.’yyyy-MM-dd log4j.appender.file.File=${logger_file_path} log4j.appender.file.layout=org.apache.log4j.PatternLayout log4j.appender.file.layout.ConversionPattern=${PATTERN}

使用JAVA从jar文件中读取MANIFEST.MF文件

有什么办法可以读取jar文件的内容。 我希望阅读清单文件,以便找到jar文件和版本的创建者。 有没有办法实现同样的目标。