我有一个我用eclipse编写的java应用程序.它在那里工作正常.
它可以从我导出它的目录中的命令行运行.在该目录中是另一个目录,其中包含应用程序所需的两个jar文件,清单文件具有指定它们的Class-path选项.
我想要一种方法来使用eclipse生成必要的文件来打包这个应用程序以在另一台机器上运行.那可能吗?
如果我选择"创建可执行jar文件",它会创建这个巨大的文件; 它解压缩并重新打包两个库,我知道这是一种获取其功能的方法.如果他们以某种方式留下自己的罐子,我会更喜欢它,但我不确定eclipse能做到这一点.令人讨厌的是,可执行jar文件选项将我的eclipse项目中的大量文件放入该jar文件中.我没有看到选择包含在那里的内容的选项,虽然我确实看到了在项目属性中输入包含和排除"规则"的地方.这些适用于这里吗?我还有其他地方选择做什么和做什么没有被包含在"可执行jar"中?
如果我选择"创建jar"("创建可执行jar"的内容),我看不到哪里可以选择将这两个jar文件包含在任何地方.也许没有地方可以将它们包含在可以使用的地方.
如果可能的话,我不想使用Ant,我不想使用Maven,我不想下载其他工具.在我看来,Eclipse已经拥有所有这些信息,我怀疑它已经可以做到这一点,而无需去学习另一个"漂亮"的工具.
我正在尝试使用Maven创建一个可执行jar文件,其中包含单独目录中的依赖项.我已经看到很多关于创造"uberjar"的问题 - 我不希望如此.我想要的是将依赖项复制到像这样的"lib"目录中(以及MANIFEST.MF带有ClassPath指向它们的条目的jar 文件):
/myApp
myApp.SNAPSHOT-1.0.jar
/lib
hibernate.jar
log4j.jar
...
Run Code Online (Sandbox Code Playgroud)
作为一个额外的奖励,如果我可以复制/src/main/resources/*到/myApp/conf然后压缩整个/myApp目录,那将myApp.zip是很好的.
编辑:我使用maven-dependency-plugin和maven-resources-plugin以及maven-jar-plugin.这是我在我的pom.xml中包含的内容(它将运行时依赖项复制到/ target/release/lib,以便我可以压缩/目标/发布并准备好了):
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<executions>
<execution>
<id>copy-dependencies</id>
<phase>package</phase>
<goals>
<goal>copy-dependencies</goal>
</goals>
<configuration>
<includeScope>runtime</includeScope>
<outputDirectory>
${project.build.directory}/release/lib
</outputDirectory>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<executions>
<execution>
<id>copy-resources</id>
<!-- here the phase you need -->
<phase>package</phase>
<goals>
<goal>copy-resources</goal>
</goals>
<configuration>
<outputDirectory>${project.build.directory}/release</outputDirectory>
<resources>
<resource>
<directory>src/main/config</directory>
<filtering>true</filtering>
</resource>
</resources>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<executions>
<execution>
<phase>package</phase>
<goals> …Run Code Online (Sandbox Code Playgroud) 我有运行可执行.jar文件的问题.我创建了一个包含.properties文件的项目.当我从eclipse启动它时,它工作得很好,但是当我将它导出到可执行的.jar文件并尝试运行它时:
java -jar myfile.jar
Run Code Online (Sandbox Code Playgroud)
我得到以下异常:
(无法在此处发布图片) http://imageshack.us/photo/my-images/824/29583616.png/
我已经检查了.jar中的清单文件,它包含了
Class-Path: .
Run Code Online (Sandbox Code Playgroud)
这是属性文件加载:
properties = new Properties();
properties.load(new FileInputStream(
"src/com/resources/treeView.properties"));
Run Code Online (Sandbox Code Playgroud)
知道导致这个异常的原因吗?
我创建了一个可执行jar,它工作正常.出于测试目的,我在main方法中使用了一个虚拟变量.
相反,我需要传递一个字符串变量,同时从php调用这个可执行jar.
简而言之,我需要:
我怎样才能达到上述目的?
我有一个可执行jar,我编写了一个shell脚本来执行它.当我手动运行shell脚本时,它运行正常但是当计划每周使用crontab运行它时,它会出现以下错误 -
log_process.sh: line 16: java: command not found
Run Code Online (Sandbox Code Playgroud)
我的shell脚本中的第16行是 -
java -jar $jar_path $logDirectory $logNamePattern $processedLogDirectory $oldResultsDirectory 2>>$log_file 1>&2
Run Code Online (Sandbox Code Playgroud)
任何想法为什么它在我手动运行时运行良好但在vrontab作业运行时却没有运行?
我有点卡住了.通常我在eclipse中使用export选项来创建一个jar.但是现在,我已经在生产中部署了我的代码,并且想要创建一个jar文件.
所以我有两个文件,
foo.java which calls bar.java
Run Code Online (Sandbox Code Playgroud)
然后它使用几个罐子
foobar.jar foo_bar.jar
Run Code Online (Sandbox Code Playgroud)
现在,主要是foo.java
我如何创建一个可执行jar.
谢谢,
我有一个使用Java 7在我的PC上创建的jar文件.我想在我的实验室服务器上运行它,它只有Java 6.我尝试运行jar文件:java -jar file.jar但是有一个UnsupportedClassVersionError异常.
由于我没有root权限,我无法在服务器上安装新的Java 7.但是,我可以将JDK7下载到我的工作文件夹(比方说/home/jdk7)
有没有办法通过指定/ home/jdk7的jdk路径来运行jar文件?谢谢.
我提取了一个 jar 文件并对其进行了一些更改。现在,我如何将它再次压缩为可执行的 jar 文件?
谢谢。(对不起,我的英语不好。)
我有一个命令行应用程序,可以下载一些报告,处理它们,然后将数据上传到 Google Drive。我正在将Typesafe-Config用于我需要的所有魔术字符串。Typesafe-Config 查看我的 application.conf 文件的类路径,并使用 HOCON 将配置对象映射到我的类中的字段,如下所示:
来自~/configs/application.conf:
my.homePageUrl = "https://my.home.com"
来自MyClass.java:
private static Config config = ConfigFactory.load();
private static final String HOME_URL = config.getString("my.homePageUrl");
Run Code Online (Sandbox Code Playgroud)
我正在使用maven-shade-plugin来构建一个可执行的 .jar,以便在远程服务器上轻松部署。该插件如下所示:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>2.4</version>
<configuration>
<transformers>
<transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
<manifestEntries>
<Main-Class>com.my.reports.ReportRunner</Main-Class>
<Class-Path>~/configs/application.conf</Class-Path>
</manifestEntries>
</transformer>
</transformers>
</configuration>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
</execution>
</executions>
</plugin>
Run Code Online (Sandbox Code Playgroud)
问题是,当我运行可执行文件 .jar 时,application.conf在我的类路径中找不到(我想这也可能是类型安全代码中的错误)。所有这些在 Intellij 中都运行良好。
dustinevan@iMac:~/bin$ java -jar my-reports-1.0-SNAPSHOT.jar
Exception in thread "main" java.lang.ExceptionInInitializerError
Caused by: com.typesafe.config.ConfigException$Missing: No …Run Code Online (Sandbox Code Playgroud) 我已经使用内置的 Gradle 支持在 IntelliJ (2019.2) 中设置了一个 OpenJDK 12 项目。为了设计 GUI,我使用的是 JavaFX 12。我已经多次遵循并阅读了安装指南,在我的 IDE 中运行程序没有问题,问题是当我尝试构建我运行的分发的 .jar 文件时成问题。到目前为止,我还没有找到一个有效的解决方案,我已经搜索了很多,几乎为此而撕裂了我的头发。目前,当我尝试使用 java -jar "jarName".jar 运行我的 jar 文件时,出现以下错误:
Exception in thread "main" java.lang.NoClassDefFoundError: javafx/application/Application
at java.base/java.lang.ClassLoader.defineClass1(Native Method)
at java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:1016)
at java.base/java.security.SecureClassLoader.defineClass(SecureClassLoader.java:151)
at java.base/jdk.internal.loader.BuiltinClassLoader.defineClass(BuiltinClassLoader.java:802)
at java.base/jdk.internal.loader.BuiltinClassLoader.findClassOnClassPathOrNull(BuiltinClassLoader.java:700)
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClassOrNull(BuiltinClassLoader.java:623)
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:581)
at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)
at com.CAM.Starter.main(Starter.java:6)
Caused by: java.lang.ClassNotFoundException: javafx.application.Application
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:583)
at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)
... 10 more
Run Code Online (Sandbox Code Playgroud)
我尝试将我的主类移动到一个不扩展应用程序的单独类,这就是导致上述错误的原因。不移动我的 Main 类,我会得到一个不同的错误。
我的 build.gradle 目前看起来像这样:
plugins {
id 'java'
id 'application'
id 'org.openjfx.javafxplugin' version '0.0.8' …Run Code Online (Sandbox Code Playgroud)