问题说明了一切。
在我的情况下,特殊之处在于当前工作目录不是jar文件的位置,而是c:\Windows\system32
(我的jar文件由Windows使用右键菜单启动,我想将文件夹的路径作为参数传递给jar)
。
现在,我想加载一个config.xml
与jar相同的文件夹中的配置文件。该文件的目的当然是为jar提供设置。对我来说重要的是,xml文件 位于
jar文件 之外 ,以便于编辑。
我很难加载该文件。Windows执行该行
cmd /k java -jar D:\pathToJarfile\unpacker-0.0.1-SNAPSHOT-jar-with-dependencies.jar
调用整个过程cmd /k
会使Windows命令提示符保持打开状态,以便我可以看到jar的输出。
我不能使用new File(".")
或System.getProperty("user.dir")
作为相对路径,因为这些函数分别返回C:\Windows\system32\.
和C:\Windows\system32
(这是Windows执行AFAIK的所有内容的工作文件夹)。
我都没有成功Launcher.class.getResourceAsStream("/../config.xml")
。由于该路径以开头/
,因此搜索从jar的根节点开始。要../config.xml
精确指向该文件,但调用返回null
。
有人可以指出我正确的方向吗?我真的被困在这里。每次加载此文件的确让我感到烦恼…
我自己的要求:
java -jar
调用(既不作为的参数,main(String[] args)
也不-Dpath=d:\...
用于设置系统属性)除了原始问题之外,在使用时,我还很难将maven2 Class-Path: .
放入MANIFEST.MF
(BalusC发布的解决方案)中jar- with-dependencies
。问题是该行出现在常规jar的MANIFEST文件中,而不出现在jar-with-
dependencies.jar的MANIFEST文件中(生成了2个jar文件)。对于任何关心我如何做到的人:
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<version>2.2-beta-5</version>
<configuration>
<archive>
<manifest>
<mainClass>${mainClass}</mainClass>
<addClasspath>true</addClasspath>
<!--at first, i tried to place the Class-Path entry
right here using <manifestEntries>. see below -->
</manifest>
</archive>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
</configuration>
<executions>
<execution>
<goals>
<goal>attached</goal>
</goals>
<phase>package</phase>
<configuration>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
<archive>
<manifest>
<mainClass>${mainClass}</mainClass>
</manifest>
<!--this is the correct placement -->
<manifestEntries>
<Class-Path>.</Class-Path>
</manifestEntries>
</archive>
</configuration>
</execution>
</executions>
</plugin>
要开始Launcher.class.getResourceAsStream("/../config.xml")
工作,您需要将其路径添加到Class- Path
JAR MANIFEST.MF
文件的条目中。这是正常的做法。
如何确认我的JAR文件已加载到Coldfusion中?我在CF10上。 我目前得到这个错误: 我的网站结构如下: 在我的申请中。cfc,我有以下代码: 这是我调用一切的代码: 更新#1 我在检查administor时发现了设置摘要,其中列出了服务器Java类路径。我添加了jar文件的位置并重新启动了服务器。即使路径存在于Administrator中的类路径中,我仍然会遇到相同的错误。 更新2 添加
jar是用“meta-inf”文件夹中的清单文件创建的。清单文件(为了查看目的删除了类路径中的一些jar条目): 文件夹结构: 我正在命令提示符下使用'java-jar application.jar mypkg.main'。 有人能告诉我是什么造成的错误和如何解决它吗?
我有两个jar文件。第一个只包含接口 在请求的基础上,我试图从中加载我的实现类。jar文件存在于某个文件夹中,在运行时使用URLClassLoader。 课程正在加载 我确信这是由于我使用不同的类加载器来加载类,但是我如何克服类之间的兼容性问题。 同样的代码可以在正常的J2SE环境中工作,但不能在JBoss环境中工作。 如果我的查询不清楚,请让我知道我也可以粘贴源代码。
我已经使用netbeans制作了jar文件,使用Build和Clean项目选项。我得到了.jar文件,现在当我执行它一小段时间后,cmd窗口出现,并给出一个错误:“Could not find or load main class while executing jar file” 但是,如果我使用命令提示符Java-jar执行jar,它可以正常工作 Netbeans的输出为: 而在jar文件中,
问题内容: 你好堆栈溢出的朋友。我有一个简单的问题,我担心没有简单的解决方案,我需要有关如何进行的建议。我正在开发一个打包为可执行JAR的Java应用程序,但它需要在执行过程中修改其某些JAR文件内容。在此阶段,我遇到了问题,因为某些操作系统锁定了文件,从而阻止了对该文件的写入。 用户必须在应用程序退出时看到jar文件的更新版本,这一点非常重要,尽管我可以非常灵活地实现这一目标。干净,高效的解决方
问题内容: 我被要求构建一个Java系统,该系统在运行时能够加载新代码(扩展)。我的代码运行时如何重新加载jar文件?或如何加载新的jar? 显然,由于持续的正常运行时间很重要,因此,我想增加在此过程中重新加载现有类的功能(如果这样做不会使事情复杂化)。 我应该注意什么?(将其视为两个不同的问题-一个关于在运行时重新加载类,另一个关于添加新类)。 问题答案: 用现有数据重新加载现有类可能会破坏事情