我可以在我的可执行jar文件中包含rt.jar并双击运行它而不先在机器上安装java吗?我希望在我的罐子里使用那个rt.jar来启动它,可能吗?如果没有,还有其他方式吗?
当我使用Maven目标"包"打包我的项目时,也包括资源.它们最初位于"src/main/resources"目录中.因为我想创建一个可执行jar并将类路径添加到清单中,所以我使用的是maven-jar-plugin.
我把它配置为以下喜欢:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>2.2</version>
<configuration>
<archive>
<manifest>
<addClasspath>true</addClasspath>
<mainClass>at.program.Main</mainClass>
</manifest>
</archive>
</configuration>
</plugin>
Run Code Online (Sandbox Code Playgroud)
为什么用"jar:jar"创建的jar文件也不包括我的资源.就我而言,它应该使用与"包"目标相同的目录(在我的情况下继承自Maven Super POM).
我遇到了Java错误.双击我编译的项目Jar文件以运行它时,我得到了这个:
Could not find the main class: testPackage.testFrame. Program will exit.
Run Code Online (Sandbox Code Playgroud)
但是,我的主类是在项目属性中定义的.此外,当我直接从NetBeans运行项目时,一切正常.
我正在使用ip2c.jar第三方库来确定来自IP地址的国家/地区.如果我评论使用ip2c.jar文件的类,我不会收到错误.
第三方库如何阻止JVM查找我的主类?
我在Eclipse中编译并运行我的程序,一切正常,但是当我用Ant打包并运行它时,我收到此错误:
Exception in thread "main" java.lang.NoClassDefFoundError: org/supercsv/io/ICsvB
eanReader
Caused by: java.lang.ClassNotFoundException: org.supercsv.io.ICsvBeanReader
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
Could not find the main class: jab.jm.main.Test. Program will exit.
Run Code Online (Sandbox Code Playgroud)
请注意,这是运行时错误,而不是Ant 的编译器错误.
我在过去用0个问题构建了这个项目,现在当我向lib文件夹中添加第二个包时,它突然出现了吗?
这是构建文件供参考:
<?xml version="1.0" ?>
<project name="ServerJar" default="dist" basedir=".">
<description>
Builds client files into .jar
</description>
<!-- [build variables] -->
<property name="src" location="src" />
<property name="build" location="build" />
<property name="dist" location="dist" /> …Run Code Online (Sandbox Code Playgroud) Jar是一种使用java的便捷方式,因为每个类都可以包含在一个jar中.
我使用如下的antlr,并使用-jar选项调用jar.
java -jar $ANTLRDIR/antlr-3.2.jar ANTLR_CODE.g
而且,这是调用clojure的命令.而不是使用-jar选项调用clojure.jar.它位于-cp中,并调用一些"函数".
java -cp $CLOJURE_JAR:$CLASSPATH clojure.lang.Script CLOJURE_CODE.clj
我添加了一个值:
HKLM\Software\Microsoft\Windows\CurrentVersion\Run
Run Code Online (Sandbox Code Playgroud)
看起来像这样:
Value Name: LDE
Value Data: "java -jar C:\LDE\lde.jar"
Run Code Online (Sandbox Code Playgroud)
真的用引号(因为所有其他地方也有引号).添加后,我重新启动了计算机,但它没有自动启动.
将我的jar包装在exe帮助中吗?
我正在运行Windows 7.
有帮助吗?
提前致谢.
当我删除引号时,它可以工作.但现在还有一个终端,我不需要......
我有一个系统,我通过一个定义良好的访问点创建一个插件.但是,有问题的插件使用了一些框架也使用但不同版本的jar.
代码的结构是一种方式,在框架中集成的代码(扩展插件扩展点)和执行实际工作的代码非常好地解耦(基本上归结为少于10个类的API).然而,在这几个类背后隐藏着一个相当大而复杂的系统(60+ jar依赖)
问题如下:
如何确保API类实例化的任何内容都是使用独立的jar文件私有库完成的?
换句话说,如何隔离插件以使其与自己的私有库一起运行而不会干扰主应用程序的库?
----编辑----到目前为止,只有两种方法可以实现,就是嵌入一个像OSGi这样的框架,或者提供我自己的类加载器实现.后者可以完成,并且在网上提出了许多变体,虽然我发现什么都不会让我对手头系统所需的稳定性充满信心.
这让我们回到OSGi,我希望有一个更轻量级的解决方案,但也许一旦我学会了技术,它将证明可以做我想要的而不需要太多的努力.
在JNLP文件中,是与任何元数据(例如清单)相关的jar资源的版本属性,还是由创建JNLP文件的用户任意设置?
我只需要一个解决方案来检索存储满足以下需求的桌面应用程序设置(例如sqlite数据库)的路径:
我花了很多时间谷歌搜索和试验通过X.class.getProtectionDomain().getCodeSource().getLocation()和java.util.pref.Preferences
类获取代码库路径,但返回值有时会产生不同的结果,返回null或只是"/"作为路径.
"跨平台"很难定义.称为"每个平台的最佳实践"的解决方案并不容易实现.在用户特定数据和共享数据之间做出区分是明智的.