标签: executable-jar

在Eclipse中生成Jar包括外部库

我有一个我用eclipse编写的java应用程序.它在那里工作正常.

它可以从我导出它的目录中的命令行运行.在该目录中是另一个目录,其中包含应用程序所需的两个jar文件,清单文件具有指定它们的Class-path选项.

我想要一种方法来使用eclipse生成必要的文件来打包这个应用程序以在另一台机器上运行.那可能吗?

如果我选择"创建可执行jar文件",它会创建这个巨大的文件; 它解压缩并重新打包两个库,我知道这是一种获取其功能的方法.如果他们以某种方式留下自己的罐子,我会更喜欢它,但我不确定eclipse能做到这一点.令人讨厌的是,可执行jar文件选项将我的eclipse项目中的大量文件放入该jar文件中.我没有看到选择包含在那里的内容的选项,虽然我确实看到了在项目属性中输入包含和排除"规则"的地方.这些适用于这里吗?我还有其他地方选择做什么和做什么没有被包含在"可执行jar"中?

如果我选择"创建jar"("创建可执行jar"的内容),我看不到哪里可以选择将这两个jar文件包含在任何地方.也许没有地方可以将它们包含在可以使用的地方.

如果可能的话,我不想使用Ant,我不想使用Maven,我不想下载其他工具.在我看来,Eclipse已经拥有所有这些信息,我怀疑它已经可以做到这一点,而无需去学习另一个"漂亮"的工具.

java eclipse jar executable-jar

4
推荐指数
1
解决办法
1万
查看次数

如何使用maven创建一个可运行的jar,其中包含一个单独的"lib"文件夹(不是超级jar)中的依赖项

我正在尝试使用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)

java executable-jar maven

4
推荐指数
1
解决办法
4037
查看次数

由于.properties文件加载,可执行.jar无法启动

我有运行可执行.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)

知道导致这个异常的原因吗?

java jar executable-jar properties-file

4
推荐指数
1
解决办法
3823
查看次数

如何使用传递给main方法的参数从php调用可执行jar

我创建了一个可执行jar,它工作正常.出于测试目的,我在main方法中使用了一个虚拟变量.

相反,我需要传递一个字符串变量,同时从php调用这个可执行jar.

简而言之,我需要:

  1. 从PHP调用可执行jar
  2. 在调用jar时,我需要将PHP中的字符串变量传递给可执行jar内的类的main方法.

我怎样才能达到上述目的?

php java jar executable-jar

4
推荐指数
1
解决办法
2万
查看次数

shell脚本在由cronjob执行时失败,否则工作正常

我有一个可执行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作业运行时却没有运行?

java linux shell cron executable-jar

4
推荐指数
1
解决办法
4745
查看次数

如何在ubuntu中从命令行制作jar文件

我有点卡住了.通常我在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 jar executable-jar

4
推荐指数
1
解决办法
1万
查看次数

在Java 6环境中运行在Java 7中创建的jar

我有一个使用Java 7在我的PC上创建的jar文件.我想在我的实验室服务器上运行它,它只有Java 6.我尝试运行jar文件:java -jar file.jar但是有一个UnsupportedClassVersionError异常.

由于我没有root权限,我无法在服务器上安装新的Java 7.但是,我可以将JDK7下载到我的工作文件夹(比方说/home/jdk7)

有没有办法通过指定/ home/jdk7的jdk路径来运行jar文件?谢谢.

java jar executable-jar

4
推荐指数
1
解决办法
3152
查看次数

压缩提取的 Jar 文件

我提取了一个 jar 文件并对其进行了一些更改。现在,我如何将它再次压缩为可执行的 jar 文件?

谢谢。(对不起,我的英语不好。)

java ubuntu jar meta-inf executable-jar

4
推荐指数
2
解决办法
7782
查看次数

可执行 Jar 在类路径上找不到 typesafe/config application.conf

我有一个命令行应用程序,可以下载一些报告,处理它们,然后将数据上传到 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)

java executable-jar maven typesafe-config

4
推荐指数
1
解决办法
3182
查看次数

使用 gradle 和 intellij 为 JavaFX 构建 FatJar,得到 NoClassDefFoundError

我已经使用内置的 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)

java javafx intellij-idea executable-jar gradle

4
推荐指数
1
解决办法
1976
查看次数