标签: executable-jar

我可以使用类路径覆盖正在运行的jar中的文件吗?

我有一个JAR文件,其中包含该应用程序的应用程序和配置文件.应用程序从类路径(使用ClassLoader.getResource())加载配置文件,并使用烘焙到JAR文件中的配置文件完全满足其依赖关系.

有时我希望应用程序以稍微不同的配置运行(特别是我想覆盖JDBC URL以指向不同的数据库)所以我创建了一个新的配置文件,将其存储在正确的目录结构中(这意味着在/config类路径条目的目录),我想做这样的事情:

java -cp new-config:. -jar application.jar
Run Code Online (Sandbox Code Playgroud)

但我不能让类new-config路径在应用程序JAR的内容之前有路径条目.它是硬编码的,JAR的内容始终是类路径中的第一件事吗?

java jar classpath executable-jar

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

Scala SBT:独立罐子

答案:使用Simple Build Tool制作独立jar似乎是我需要的,但它没有足够的信息给我,所以这是一个后续.

(1)如何根据需要调整答案?我不明白需要改变什么.

(2)我运行什么命令来创建独立jar?

(3)创建后,我在哪里可以找到它?


我尝试过的:

  • 将链接的答案中的代码逐字地粘贴到我的:project/build/dsg.scala文件中.该文件现在有一个

    class ForkRun(info: ProjectInfo) extends DefaultProject(info)

    (从之前,用于在与SBT分开的VM中运行项目)和新的:

    trait AssemblyProject extends BasicScalaProject

    从链接的答案.

  • 我也试过粘贴体(所有defslazy valAssemblyProject成体ForkRun.

要创建一个jarpackage在SBT提示符下运行并得到:

[info] Packaging ./target/scala_2.8.1/dsg_2.8.1-1.0.jar ...
[info] Packaging complete.
Run Code Online (Sandbox Code Playgroud)

所以我尝试dsg_2.8.1-1.0.jar通过shell 运行shell:

java -jar dsg_2.8.1-1.0.jar 
Run Code Online (Sandbox Code Playgroud)

但我得到:

Failed to load Main-Class manifest attribute from
dsg_2.8.1-1.0.jar
Run Code Online (Sandbox Code Playgroud)

这可能是因为我的项目中有多个入口点吗?当我run从SBT提示执行时,我从列表中选择.也许我需要在创建包时指定默认值?

scala executable-jar package sbt

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

如何在Windows中运行或安装*.jar文件?

我已下载,jbpm-installer-3.2.7.jar但我不知道如何安装或运行该文件.

如果我双击它,它会打开winrar.我尝试通过命令提示符安装,但我收到以下错误:

C:\Documents and Settings\ccuser\Desktop\manoj>java -jar jbpm-installer-3.2.7.jar

Exception in thread "main" java.lang.UnsupportedClassVersionError: com/izforge/izpack/installer/Installer (Unsupported major.minor version 49.0)
    at java.lang.ClassLoader.defineClass0(Native Method)
    at java.lang.ClassLoader.defineClass(Unknown Source)
    at java.security.SecureClassLoader.defineClass(Unknown Source)
    at java.net.URLClassLoader.defineClass(Unknown Source)
    at java.net.URLClassLoader.access$100(Unknown Source)
    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)
    at java.lang.ClassLoader.loadClassInternal(Unknown Source)
Run Code Online (Sandbox Code Playgroud)

java installer jar executable-jar

17
推荐指数
2
解决办法
15万
查看次数

如何制作java fx 2.0项目的可执行文件

我想制作一个我用Java fx 2.0制作的项目的可执行文件.谁可以帮我这个事?

executable-jar javafx-2

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

如何在jar中使用javax.net.ssl.keystore中的文件?

我正在尝试做类似的事情

URL clientks = com.messaging.SubscriptionManager.class.getResource( "client.ks" );
String path = clientks.toURI().getPath();
System.setProperty( "javax.net.ssl.keyStore", path);
Run Code Online (Sandbox Code Playgroud)

其中client.ks是存储在我正在运行的jar文件中的com/messaging中的文件.

读取javax.net.ssl.keyStore的东西需要一个到jar中的client.ks文件的路径.如果可能的话,我宁愿不提取文件并放入客户端的机器上.那么可以在jar中引用一个文件吗?

这不起作用,因为getPath()返回null.还有另一种方法吗?

java jar executable-jar

15
推荐指数
3
解决办法
2万
查看次数

如何在Windows上使用Java Hotspot JVM禁用minidump(mdmp)文件生成

目前,我有一个已部署的可执行jar文件,可在崩溃时创建大型(7+ Gb)minidump文件.我想有一个文本表示导致崩溃的原因,而不是JVM状态的二进制文件.我已经尝试使用此CodeRanch帖子中的信息,我在Java文档中找到的文档似乎没有帮助.

我也引用了这个问题,但没有明确的答案.

是否有一种我不知道的典型方式?

java jar executable-jar jvm-hotspot

15
推荐指数
1
解决办法
6363
查看次数

jar文件是如何执行的?这些课程是在某处提取的吗?

我们知道这jar是一种压缩的归档文件格式,它充当已编译的java类和conf文件的容器.据我所知,要从压缩容器文件中读取任何内容,首先需要将它们提取到某处.

那么JVM如何在jar中执行类?它是否将jar的内容提取到临时位置然后执行类?

java jvm executable-jar

15
推荐指数
1
解决办法
2748
查看次数

UnsupportedClassVersionError:已由更新版本的 Java 运行时(类文件版本 55.0)编译,此版本 (..) 最高为 52.0

我正在尝试启动为 Spring Boot 项目构建的 jar 文件。首先我做了:

mvn clean package spring-boot:repackage
Run Code Online (Sandbox Code Playgroud)

然后我尝试启动 jar 文件,但出现以下错误:

线程“main”中出现异常 java.lang.UnsupportedClassVersionError:it/sysdata/helios_backend_admin/HeliosAdminBackendApplication 已由更新版本的 Java 运行时(类文件版本 55.0)编译,此版本的 Java 运行时仅识别类文件版本到 52.0 在 java.lang.ClassLoader.defineClass1(本机方法) 在 java.lang.ClassLoader.defineClass(未知来源) 在 java.security.SecureClassLoader.defineClass(未知来源) 在 java.net.URLClassLoader.defineClass(未知来源)在 java.net.URLClassLoader.access$100(未知来源) 在 java.net.URLClassLoader$1.run(未知来源) 在 java.net.URLClassLoader$1.run(未知来源) 在 java.security.AccessController.doPrivileged(本机方法) )在 java.net.URLClassLoader.findClass(未知来源) 在 java.lang.ClassLoader.loadClass(未知来源) 在 org.springframework.boot.loader.LaunchedURLClassLoader.loadClass(LaunchedURLClassLoader.java:93) 在 java.lang.ClassLoader .loadClass(来源不明)在org.springframework.boot.loader.MainMethodRunner.run(MainMethodRunner.java:46)在org.springframework.boot.loader.Launcher.launch(Launcher.java:87)在org.springframework.boot .loader.Launcher.launch(Launcher.java:50) 在 org.springframework.boot.loader.JarLauncher.main(JarLauncher.java:51)

我检查过,java版本到处都是11(至少从我所看到的)。这是 pom:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.1.2.RELEASE</version>
        <relativePath /> <!-- lookup parent from repository -->
    </parent>
    <groupId>it.sysdata</groupId>
    <artifactId>helios_backend_admin</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>helios-admin-backend</name>
        <packaging>jar</packaging>
    <description>Helios Backend …
Run Code Online (Sandbox Code Playgroud)

java executable-jar maven maven-jar-plugin spring-boot

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

在可执行jar中打包Jython程序

我正在尝试将jython程序打包到一个可执行jar中,用户只需双击即可运行而无需提前安装jython.最后,我想包含一个我用jar编写的附加库,但是目前我只是尝试打包一个简单的程序并让它从jar运行.

我已经尝试按照"使用Jar方法"部分中的jar说明进行操作:Jython FAQ:使用Jar方法

我还在这里看了25-28幻灯片:Jython Update 2012幻灯片

最后在这里: stackoverflow问题:使用Jython将我的Python脚本分发为Jars

我在运行OS X 10.8.3的mac上安装了jython 2.5.3,jvm 1.6和python 2.7.3.

这些是我创建jar并运行它的步骤:

  1. 从我的jython安装目录创建jython.jar的副本.
  2. zip -r jython_copy.jar Lib (其中Lib是jython安装目录中的文件夹)
  3. cp myJythonProgram.py __run__.py(myJythonProgram.py不包含'if name == main '行)
  4. zip jython_copy.jar __run__.py
  5. export CLASSPATH=/path/to/my/app/jython_copy.jar:$CLASSPATH

我尝试使用以下三种方法运行jar:

  1. java org.python.util.jython -jar myapp.jar
  2. java -cp myapp.jar org.python.util.jython -jar myapp.jar
  3. java -jar myapp.jar -jar myapp.jar

如果我的程序不使用任何import语句,则此方法有效.

但是我遇到了一个问题,当我运行jar时无法找到一些python包.例如,当我from random import random在程序中包含该行时,我收到错误"ImportError:No module called random" .从javax.swing,java.awt,time或math导入时,程序中的行不会发生错误.

另外,我尝试用我的库和一个jython程序打包一个jar,它使用前面的步骤导入我的库以及以下附加步骤:

  1. zip jython_copy.jar myLibrary.jar
  2. jar ufm jython_copy.jar othermanifest.mf

othermanifest.mf只包含该行Class-Path: ./myLibrary.jar.

这也给出了错误"ImportError:No module named myLibrary"

如果我对错误或我应该采取的其他步骤有所了解,我将不胜感激. …

packaging jython executable-jar

14
推荐指数
1
解决办法
4408
查看次数

创建包含外部文件的Runnable Jar

我想在java中构建一个可运行的jar.我需要在jar中包含一些文件,这样当我执行jar时,文件会自动从java类中读取.因此,我在项目中创建了一个文件夹,并从项目中引用了这些文件.我在一些教程后创建了jar文件,但是我无法将这些外部文件包含在我的jar文件中.请告诉我有关使用外部文件创建可运行jar的信息.

我的文件结构是

Test
|
|
-------src
|        |
|        default package
|                      |
|                      |
|                      test1.java
|
 -------FileFOlder
|              |
|              | 
|              abc.txt
Run Code Online (Sandbox Code Playgroud)

我访问的abc.txttest1.java类.我的代码是,

public class test1 {


public static void main(String[] args) throws IOException {


    char [] read = new char[20];
    String path = new File(".").getCanonicalPath();
    path = path+"\\Newfolder\\abc.txt";
    System.out.println(path);
    File nF = new File(path);
    FileReader fR = new FileReader(nF);
    fR.read(read);
    for(char c : read){
        System.out.print(c);
    }
    fR.close();
    System.out.println(" Hi..This is test program …
Run Code Online (Sandbox Code Playgroud)

java jar file executable-jar

14
推荐指数
2
解决办法
5万
查看次数