标签: executable-jar

Java:如何从包中编译可运行的jar?

我的Java应用程序有一个类似于这样的包结构:

src/com/name/app 
src/com/name/app/do 
src/com/name/utils/db
Run Code Online (Sandbox Code Playgroud)

我如何将这些目录中的Java文件编译到可运行的jar中?我需要将所需的库打包到生成的JAR(jdbc)中.

我总是在Eclipse中完成这些工作,但现在我需要为几个人提供一种编译存储库而不使用eclipse的方法,我正在考虑制作一个makefile或一个调用必要的javac模式的脚本.

java packages makefile javac executable-jar

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

带有可执行jar的NoClassDefFoundError

exec jar可能是一个非常常见的问题.我正在尝试创建并运行一个可执行jar,它让我疯狂.

我有几个类(包stmts),其中一个有一个main方法,一个简单的空构造函数和几个biz方法,这些构成了一个小eclipse项目的一部分.
我使用build.xml将这些和清单文件捆绑到jar(arc.jar)中.我的程序使用jdom库以及我的其他一个eclipse项目的引用,所以我在构建我的arc.jar时包括了jdom libray和其他商业库.

这是我写的Manifest.MF,有一个新的后续Main-Class

Manifest-Version: 1.2  
Class-Path: jdom.jar other.jar
Main-class: uk.co.Art 
Run Code Online (Sandbox Code Playgroud)

当我解压缩这个arc.jar时,它包含jdom.jar,other.jar,META-INF/Manifest.mf以及包含我的类的包.有趣的是,jar中的Manifest文件看起来像这样 -

Manifest-Version: 1.2 
Created-By: 14.2-b01 (Sun Microsystems Inc.) 
Main-class: uk.co.Art
Class-Path: jdom.jar other.jar
Run Code Online (Sandbox Code Playgroud)

ClassNotFoundException: uk.co.Art当Main类的值没有包时,我得到了ClassNotFoundException .使用包时错误更改为ClassNotFoundException: org.jdom.JDOMException.
所以只是为了测试目的,我尝试c:\为我的执行类和jar 提供完整路径,但仍然无法找到主类,错误输出ClassNotFoundException: uk.co.Art.
我似乎无法理解为什么.
我使用的命令行是 - java -jar Arc.jar
cmd提示符下的版本是 - 而eclipse安装的jre是jre6
java version "1.6.0_16"
Java(TM) SE Runtime Environment (build 1.6.0_16-b01)
Java HotSpot(TM) Client VM (build 14.2-b01, mixed mode)

你们有什么人建议的?

Alex的解决方案确实解决了本地执行的问题.
我还想到另一种方式(作为一个额外的选项)执行,在服务器上部署Arc.jar并在该机器上运行批处理,基本上设置java类路径,然后调用jar或直接调用类,无论它是哪种方式作品.But its only an option, not a preferred one though. …

java manifest classpath executable-jar

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

Java:从同一个JAR启动两个不同的应用程序?

是否有可能从同一个罐子中启动两个不同的应用程序?我编写了简单的客户端服务器,客户端和服务器部分都在一个JAR中.他们使用一些常见的类.

我明白,我可以为客户端和服务器创建单独的jar,并将常用的类和资源放入第三个jar中.这实际上是做事的"正确"方式.但我的任务很简单,课程很小,我只是不想制作三个罐而不是一个.

java -jar需要清单中的Main-Class.似乎没有-jar开关我也无法工作.

顺便说一下,客户端和服务器应该能够并行运行.

java jar executable-jar

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

双击启动Java程序

我有一个我一直在研究的Java程序.我想向我的女朋友展示一下,她不知道如何使用Java,并让她很容易这样做.我理解第一步是从命令行将其编译为.class,但之后我无能为力.

我有兴趣找出如何做到这一点适用于Windows和Mac OS(我在Mac上,跟我女朋友一起,但我的学校使用Windows计算机).

我一直在甲骨文看到他们的演示,他们下载为.jnlp,是朝着正确方向迈出的一步吗?

具体来说,我正在寻找一种简单的下载和启动的"文件",没有涉及终端(可能是一个带有命令行的文件?).

java deployment macos installer executable-jar

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

使用命令提示符启动后台java

我使用以下命令运行jetty服务器,服务器启动,并在命令提示符中显示与服务器启动相关的消息:

java -jar start.jar
Run Code Online (Sandbox Code Playgroud)

我想要的是:

我想在后台启动jetty服务器,即服务器应该启动,并且在命令提示符中不应显示任何消息.因此我尝试了这些命令:

start /MIN java -jar start.jar

start /B java -jar start.jar
Run Code Online (Sandbox Code Playgroud)

这个命令的缺点:

我能够启动服务器,但java.exe窗口打开显示所有服务器启动消息 - 我不希望也显示java.exe窗口.

请让我知道如何以这样的方式启动服务器:

1)服务器在后台启动

2)不显示java.exe窗口

谢谢.

java windows jetty command-prompt executable-jar

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

如何使用与之前相同的清单重新打包 jar 文件?

我解压缩一个 jar 文件,添加一个filex然后filex使用以下命令将其压缩:

jar cf jarfile input-files filex META-INF
Run Code Online (Sandbox Code Playgroud)

我发现在jar用这个新文件打包后,新文件MANIFEST是默认的,基本上是空的:

Manifest-Version: 1.0
Created-By: 1.8.0_40 (Sun Microsystems Inc.)
Run Code Online (Sandbox Code Playgroud)

我想知道是否有一个标志来指定MANIFEST再次打包 jar 的时间。

java jar executable-jar

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

在运行时和编译时jdk版本之间,哪个可以更大

java程序或jar的运行时版本和编译时版本两者中的哪一个应该大于或等于另一个?编辑:JRE 系统库的版本应该是什么?

java jar executable-jar

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

无法使用 jar 命令构建 - java.io.IOException: 行太长

我有看起来像这样的文件夹:

foo/
 Bar.java
 Bar.class
 Foo.java
 Foo.class
 manifest.mf
Run Code Online (Sandbox Code Playgroud)

.java 文件都在一个名为 x 的包中:

package x;
Run Code Online (Sandbox Code Playgroud)

我生成 .class 文件:

javac foo/*.java
Run Code Online (Sandbox Code Playgroud)

然后我尝试打包为可运行的 jar 格式:

jar cmf foo.jar foo/manifest.mf foo/*.class
Run Code Online (Sandbox Code Playgroud)

但我收到此错误:

 java.io.IOException: line too long
        at java.base/java.util.jar.Attributes.read(Attributes.java:381)
        at java.base/java.util.jar.Manifest.read(Manifest.java:228)
        at java.base/java.util.jar.Manifest.<init>(Manifest.java:80)
        at java.base/java.util.jar.Manifest.<init>(Manifest.java:72)
        at jdk.jartool/sun.tools.jar.Main.run(Main.java:264)
        at jdk.jartool/sun.tools.jar.Main.main(Main.java:1669)
Run Code Online (Sandbox Code Playgroud)

manifest.mf 的内容只是:

Main-Class: x.Bar
Run Code Online (Sandbox Code Playgroud)

它编译时javac不确定发生了什么,或者为什么它不喜欢清单文件,有人知道吗?

java jar executable-jar runnable-jar

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

Gradle 实现与 jar 任务中的编译

我可以成功地使用Gradle编译胖 JAR,但是在最近从“编译”依赖项规范切换到“实现/api”规范后运行 JAR 时遇到问题。我已经确定问题仅发生在以下两种情况之一。应用程序在 IntelliJ 中的任一情况下运行。

第一/问题:

dependencies {implementation 'no.tornado:tornadofx:1.7.18'}
Run Code Online (Sandbox Code Playgroud)

第二/作品:

dependencies {compile'no.tornado:tornadofx:1.7.18'}
Run Code Online (Sandbox Code Playgroud)

JAR 在这两种情况下都会编译。当我尝试在命令行上启动第一个案例 JAR 时出现问题,并引发以下错误。

C:\aaa_eric\code\testr\mic\build\libs>java -jar mic-1.0-snapshot.jar 错误:无法找到或加载主类 app.MyApp 引起:java.lang.NoClassDefFoundError:tornadofx/App

这是 build.gradle 中的 JAR 任务。tornadofx 依赖项是否可能在编译时可用,但在运行时不可用?谢谢你的帮助。

jar {
  manifest {
    attributes 'Main-Class': 'app.MyApp'
  }
  from { configurations.compile.collect { it.isDirectory() ? it : zipTree(it) } }
}
Run Code Online (Sandbox Code Playgroud)

jar executable-jar build.gradle

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

尝试将可执行 jar 文件复制到 AWS ec2 实例中,但获得权限被拒绝错误

我想将 spring-boot 可执行 jar 文件部署到 Amazon EC2 实例中。我使用 pem 文件成功登录到实例,但无法将我的 Jar 从本地系统位置复制到 ec2。我使用的命令是

scp -i /Users/sandeepamarnath/Desktop/AWS/recovery-key.pem /Users/sandeepamarnath/Desktop/AWS/foodapp-0.0.1-SNAPSHOT.jar ec2-user@ec2-15-222-1-81.ca-central-1.compute.amazonaws.com:~
Run Code Online (Sandbox Code Playgroud)

我收到一个拒绝许可的错误,如下所示:

警告:身份文件 /Users/sandeepamarnath/Desktop/AWS/recovery-key.pem 不可访问:没有这样的文件或目录。权限被拒绝(公钥)。

失去了连接

错误截图

在此处输入图片说明

executable-jar amazon-ec2

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