标签: executable-jar

Eclipse - 将所需的库提取/打包到同一个Runnable JAR中

使用Eclipse将项目导出为Runnable JAR文件时,有三种选择:

1. Extract required libraries into generated JAR
2. Package required libraries into generated JAR
3. Copy required libraries into a sub-folder next to the generated JAR
Run Code Online (Sandbox Code Playgroud)

但是,似乎只能从Runnable JAR File Export窗口中选择三个选项中的一个.我想知道是否有一些方法可以混淆这些方法,例如,在打包其余文件的同时提取一些文件?

注意:我需要这个,因为我的一个JAR文件包含大量对其他文件的引用,所以1不能是一个选项,我担心2可能会给我带来一些问题.

谢谢!

java eclipse export jar executable-jar

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

在可执行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
查看次数

从Windows命令行调用jar文件时,System.out无法正常工作

我有这门课:

public class Test {
    public static void main(String[] args) {
        System.out.println("Hello World!");
    }
}
Run Code Online (Sandbox Code Playgroud)

我使用Eclipse的"Export to runnable JAR"函数将其转换为可执行的jar文件(test.jar).当我在Eclipse中运行这个程序时,它打印出"Hello World!",但是当我从命令行调用jar文件时,没有任何反应.

我试过像这样调用jar文件:

test.jar
test.jar -jar
Run Code Online (Sandbox Code Playgroud)

没有任何输出.

我有另一个程序也有副作用(除了输出到stdout),并且正在执行副作用(告诉我jar文件肯定已执行),同样没有给命令行输出.我也尝试过使用stderr,但这没什么区别.有谁知道我怎么做这个工作?

谢谢!

java eclipse jar executable-jar

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

与Procrun一起安装的Windows服务在// TS模式下工作,但不作为Windows服务启动,说它"已启动然后停止"

我通过运行以下命令将标准可执行jar文件安装为Windows服务:

> prunsrv.exe //IS//"My Service" --Install="C:\path-to-prunsrv.exe" --Jvm=auto \
  --Startup=auto --StartMode=jvm --Classpath="C:\path-to-MyService.jar" \
  --StartClass=com.mydomain.MyService
Run Code Online (Sandbox Code Playgroud)

我现在可以通过运行以下命令(我正在使用Java 1.6)在控制台模式下运行我的程序:

> prunsrv.exe //TS//"My Service"
Run Code Online (Sandbox Code Playgroud)

当我尝试通过标准Windows服务接口启动服务时,我收到以下错误消息:

本地计算机上的MyService服务已启动,然后停止.如果某些服务未被其他服务或程序使用,则会自动停止.

当我尝试以这种方式启动服务时,我的应用程序的日志文件中没有输出.Window的事件日志(Windows 7 64位)中也没有输出.我该怎么做才能找出为什么这项服务无法运行?

java windows-services executable-jar procrun

13
推荐指数
1
解决办法
7986
查看次数

使用JarBundler将Java转换为MacOSX的.app文件

我所要做的就是将一个简单的java程序转换为macOSX .app文件,这样我就可以将它作为一个简单的可执行文件分发.

我到处都读过,每个人都说同样的话:

  1. 使用Xcode - 据我所知,Xcode不再支持Java Build
  2. 使用Jar Bundler - 所有教程似乎都已过时,但它不起作用.当我运行:java -jar jarbundler-2.0.0.jar

    控制台返回"jarbundler-2.0.0.jar中没有主要清单属性"

    如果我是对的,那么打包jar文件的人会失败吗?但我试过从其他网站和其他版本下载它,但我得到了相同的东西.

  3. 他们说你可以自己创建目录和文件,然后将你的文件夹重命名为.app,然后对它运行一个命令,但这很复杂,因为我不确切知道如何创建一个info.plist文件......如果你想这样做,我到目前为止找到的最好的网站就是这个:OSX的Java部署选项

我已将我的代码编译成.jar文件,我有一个图标和所有内容,我需要做的就是以某种方式将其打包到.app文件中.

我在这里先向您的帮助表示感谢!

编辑:我明白了!经过7或8个小时的搜索和阅读后,它可以工作.因为我是新手,所以我将发布我所学到的所有东西来拯救那些经历过同样问题的人.我放弃了自己做的方法,然后回到了JarBundler.如果其他人正在读这个并且他们对ANT一无所知,那就是我所做的:下载JarBundler,我从这里得到了我的:Mac OS X JarBundler ANT任务并按照其中的说明操作.

下载时,请将jarbundler-2.2.0.jar文件放在此处:

的/ usr /共享/蚂蚁/ lib中

您可能必须运行命令来移动它,例如:

sudo mv jarbundler-2.2.0.jar~ /../../ usr/share/ant/lib/jarbundler-2.2.0.jar

就像我说的那样,我还在学习,但这对我有用.

确保您移动合适jarbundler,这是我遇到了问题,我把整个文件夹,而不是内部.jar文件,所以一定要移动拉链你下载的是这样的文件夹内的.jar,而不是整个事情,否则当你去构建它时,你会得到一个错误,如错误:taskdef class net.sourceforge.jarbundler.JarBundler找不到.

然后你需要将你的代码编译成一个.jar文件(有两种类型,一种是像.zip,另一种是可执行文件)你想要一个普通的JAR文件,不是可执行的,所以要做到这一点你首先需要编译您的代码获取.class文件,然后打开命令提示符并按照此处的说明操作:创建一个Jar文件该命令将如下所示:

jar cf myName.jar*.class

获得jar文件后,需要在同一文件夹中创建.xml文件,并且需要将其命名为build.xml.使用文本编辑器编辑它.按照上面链接中的说明创建它.它看起来像这样:

//build.xml

<project name="MyProject">

<taskdef name="jarbundler"
classname="net.sourceforge.jarbundler.JarBundler" />

<target name="bundle">

<jarbundler dir="release"
        name="Apollo's Image Editor"
        mainclass="ImageEditorGUI" 
        jar="ApolloIE.jar"
        icon="Aperture.icns" />

</target>

</project>
Run Code Online (Sandbox Code Playgroud)

从那里(顺便说一下,我使用的是Macbook Pro)你所要做的就是从该文件夹运行一个命令行:

蚂蚁束

它应该在名为release的文件夹中创建一个.app文件.总结一下:你需要的只是同一个文件夹中的.jar文件和build.xml文件,然后运行命令:ant bundle(或者你在build.xml文件中命名为target的任何东西,我把它命名为bundle)

祝你好运,希望这有助于那里的任何人.

如果有人想知道,我拿了由JarBundler生成的Info.plist并将其放入我正在制作的目录中并且它有效!所以这就是问题,我只是不知道如何正确格式化......这里是:Info.plist

java macos jar executable-jar

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

Spring Boot MVC多模块可执行jar

我有一个多模块项目,使用弹簧启动1.1.7构建

结构是

+ parent
    + import
        + web
        + backend
Run Code Online (Sandbox Code Playgroud)

我的父模块将包括一些微服务,我想从我父母管理的东西(所有使用的依赖项)等等.在导入/后端有我的批处理业务逻辑,在web中有一个mvc应用程序,从那里我可以开始批处理作业.

在Eclipse中,一切正常,我可以从Application.java文件和应用程序启动应用程序.

现在我想通过执行可执行jar文件来执行该应用程序,但是当我尝试从控制台启动时,我收到以下错误消息.

java -jar application.jar
Kein Hauptmanifestattribut in application.jar
Run Code Online (Sandbox Code Playgroud)

jar是非常小的只有5kb,我没有在jar包中找到任何3方依赖的罐子.

Web模块的Pom如下:

    <project>

        <modelVersion>4.0.0</modelVersion>

        <parent>
            <groupId>at.company.bbsng</groupId>
            <artifactId>bbsng-import</artifactId>
            <version>0.1.0-SNAPSHOT</version>
        </parent>

        <artifactId>bbsng-import-web</artifactId>
        <name>bbsng-import-web</name>
        <packaging>jar</packaging>

        <properties>
            <start-class>at.company.bbsng.dataimport.Application</start-class>
        </properties>


        <dependencies>

             <!-- APPLICATION -->
            <dependency>
                <groupId>at.company.bbsng</groupId>
                <artifactId>bbsng-import-backend</artifactId>
                <version>${parent.version}</version>
            </dependency>

            <!-- SPRING ... -->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-web</artifactId>
                <exclusions>
                    <exclusion>
                        <artifactId>spring-boot-starter-logging</artifactId>
                        <groupId>org.springframework.boot</groupId>
                    </exclusion>
                </exclusions>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-log4j</artifactId>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-test</artifactId>
                <scope>test</scope>
            </dependency>

            ...


        </dependencies>



        <build>

            <plugins>
                <plugin>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-maven-plugin</artifactId>
                </plugin>
            </plugins>

        </build>

</project> …
Run Code Online (Sandbox Code Playgroud)

java spring jar executable-jar spring-boot

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

Runnable Jar找不到资源和其他库

我创建了一个桌面应用程序,我遇到了生成的runnable jar问题.在Eclipse环境中一切正常,但是当我生成jar时,它只显示swt组件(菜单,选项卡等).其他库位置是一个空白区域(用于生成库的库).没有出现相同的内容set ToolBar(包含带图像的按钮),GoogleMap.html不会出现.

如何正确生成包含这些外部源的可执行jar?

ToolBar图片加载代码:

folderSearchIcon = new Image(display, this.getClass().getResourceAsStream("images/search_folder.png"));
Run Code Online (Sandbox Code Playgroud)

GoogleMap.html加载代码:

File mapFile = new File("resources/GoogleMap.html");        
if(!mapFile.exists()) {
    System.out.println("File doesn't exist! " + mapFile.getAbsolutePath()); 
    return;
}
Run Code Online (Sandbox Code Playgroud)

生成可运行的jar:

在此输入图像描述

我在Eclipse中的app结构和生成的jar结构:

在此输入图像描述

生成的清单:

Manifest-Version: 1.0
Rsrc-Class-Path: ./ swt.jar commons-imaging-1.0-SNAPSHOT.jar org.eclip
  se.nebula.widgets.gallery_0.5.3.201210262156.jar xmpcore.jar metadata
  -extractor-2.6.3.jar
Class-Path: .
Rsrc-Main-Class: geotagger.AppInit
Main-Class: org.eclipse.jdt.internal.jarinjarloader.JarRsrcLoader
Run Code Online (Sandbox Code Playgroud)

java eclipse swt executable-jar

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

"找不到编译器镜像中的scala.runtime",但在使用-Xbootclasspath/p:scala-library.jar启动时正常工作

我正在尝试运行作为JAR打包的Scala应用程序(包括依赖项),但是在使用该-Xbootclasspath/p选项添加Scala库之前,这会失败.

调用失败:

java -jar /path/to/target/scala-2.10/application-assembly-1.0.jar
Run Code Online (Sandbox Code Playgroud)

在应用程序执行了一些预期输出后,控制台显示:

线程"main"中的异常scala.reflect.internal.MissingRequirementError:找不到编译器镜像中的对象scala.runtime.at scala.reflect.internal.MissingRequirementError $ .signal(MissingRequirementError.scala:16)at scala.reflect.internal.MissingRequirementError $ .notFound(MissingRequirementError.scala:17)at scala.reflect.internal.Mirrors $ RootsBase.getModuleOrClass(Mirrors .scala:48)scala.reflect.internal.Mirrors $ RootsBase.getModuleOrClass(Mirrors.scala:40)at scala.reflect.internal.Mirrors $ RootsBase.getModuleOrClass(Mirrors.scala:61)at scala.reflect.internal.镜像$ RootsBase.getPackage(Mirrors.scala:172)at scala.reflect.internal.Mirrors $ RootsBase.getRequiredPackage(Mirrors.scala:175)at scala.reflect.internal.Definitions $ DefinitionsClass.RuntimePackage $ lzycompute(Definitions.scala: 181)scala.reflect.internal.Definitions上的scala.reflect.internal.Definitions $ DefinitionsClass.RuntimePackage(Definitions.scala:181)scala.reflect.internal.Definitions $ DefinitionsClass.RuntimePackageClass $ lzycompute(Definitions.scala:182)at scala.reflect.internal.Definitions scala.reflect上的$ DefinitionsClass.RuntimePackageClass(Definitions.scala:182).在scala.reflect.internal.Definitions $ DefinitionsClass.AnnotationDefaultAttr(Definitions.scala:1014)的scala.reflect.internal.Definitions $ DefinitionsClass.syntheticCoreClasses $ lzycompute中的internal.Definitions $ DefinitionsClass.AnnotationDefaultAttr $ lzycompute(Definitions.scala:1015)定义.scala:1144)scala.reflect.internal.Definitions $ DefinitionsClass.syntheticCoreClasses(Definitions.scala:1143)scala.reflect.internal.Definitions $ DefinitionsClass.symbolsNotPresentInBytecode $ lzycompute(Definitions.scala:1187)at scala.reflect .internal.Definitions $ DefinitionsClass.symbolsNotPresentInBytecode(Definitions.scala:1187)at scala.reflect.internal.Definitions $ DefinitionsClass.init(Definitions.scala:1252)at scala.tools.nsc.Global $ Run.(Global.scala: 1290)在extract.ScalaExtractor $ Compiler $ 2 $.(ScalaExtractor.scala:24)

工作调用:

java -Xbootclasspath/p:/path/to/home/.sbt/boot/scala-2.10.2/lib/scala-library.jar -jar …
Run Code Online (Sandbox Code Playgroud)

scala executable-jar scala-compiler

12
推荐指数
1
解决办法
9646
查看次数

如何使用便携式JRE打包可执行jar?

我希望能够通过可执行JAR进行分发,而无需让用户升级到最新版本的JRE.如何将JRE打包到JAR中,以便它们可以在系统上没有安装JRE的情况下运行jar?

java executable-jar

11
推荐指数
2
解决办法
9870
查看次数

如何在我自己的Project JAR中包含外部JAR

我有一个Java应用程序并创建了一个JAR文件并进行了部署.

该应用程序使用外部JAR,如Log4J JAR.创建JAR文件时,如何将所有外部相关JAR包含到我的存档中?

为了让我的应用程序正常工作,我不得不将Log4J JAR复制到与我自己的JAR相同的目录中,这有点违背了jar的目的.部署一个JAR文件不是更优雅吗?

java executable-jar

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