嗨,我正在尝试使用webstart部署应用程序.我需要更新在实际部署之前签名的jar(基本上是为了更新IP /端口信息).我正在尝试使用ANT来更新jar.是否有办法实现这一目标?
我有一个大型项目(使用Eclipse),它使用1.5更新18 JDK,各种外部JAR等.它已在Eclipse中正确设置.是否可以创建一个Ant文件,从我项目中的特定源文件生成JAR?(许多源文件可以编译到Java应用程序中.所有这些文件共享许多相同的资源,因此是巨大的项目工作区).
到目前为止,我只能弄清楚如何为整个项目创建Ant构建文件,而不是将特定的.java文件构建到应用程序中,更不用说从中创建.jar了.
感谢您的帮助!
这是在我的程序最后一次失败之后.我注意到文件大小已经改变,我不能再运行我的程序的Java类:
root@dbs01 ~
$ ls -l lifecycle-0.1-SNAPSHOT.jar
-rw-r--r-- 1 root root 24740243 Jun 4 20:48 lifecycle-0.1-SNAPSHOT.jar
Run Code Online (Sandbox Code Playgroud)
这是在我复制原始JAR文件的新副本之后:
root@dbs01 ~
$ ls -l lifecycle-0.1-SNAPSHOT.jar
-rw-r--r-- 1 root root 24833475 Jun 4 20:55 lifecycle-0.1-SNAPSHOT.jar
Run Code Online (Sandbox Code Playgroud)
然后我运行Java命令:
root@dbs01 ~
$ java -cp lifecycle-0.1-SNAPSHOT.jar com.abc.lifecycle.cli.LifecycleManagerCli -dm web 0001 lm2-dom0.sfbay.abc.com ZONE /path/to/bits
Jun 4, 2009 8:55:51 PM org.springframework.context.support.AbstractApplicationContext prepareRefresh
INFO: Refreshing org.springframework.context.support.ClassPathXmlApplicationContext@186c6b2: display name [org.springframework.context.support.ClassPathXmlApplicationContext@186c6b2]; startup date [Thu Jun 04 20:55:51 GMT+00:00 2009]; root of context hierarchy
Jun 4, 2009 8:55:51 PM org.springframework.beans.factory.xml.XmlBeanDefinitionReader loadBeanDefinitions
INFO: Loading …Run Code Online (Sandbox Code Playgroud) 我有一个用Java编写的应用程序,它使用一个jar文件(它使用多个,但这不是重点).
事实是,我正在使用的Jar文件包含我绝对必须提取到文件系统的文件.
到目前为止,我正在使用Class.getResourceAsStream和FileOutputStream,但这种方法有点慢.请注意,其中一些文件是基于文本的,但其他文件只是二进制文件.
因此,除了尝试减少从JAR中提取文件的需求之外,还有针对这些任务的任何优化(例如更充分的功能).
请注意,我的应用程序是基于Java 6的,我希望将外部依赖性降至最低.
编辑:为了将来参考,我的OLD(inefficent)代码是:
int c;
while((c = is.read())!=-1){
fos.write(c);
}
Run Code Online (Sandbox Code Playgroud)
对于新的,更快的代码,请参阅接受的回复.
我正在使用程序集和jar插件来部署我的应用程序.我也使用jar插件来帮助我使用清单文件生成类路径
<addClasspath>true</addClasspath>
Run Code Online (Sandbox Code Playgroud)
虽然这似乎有效,但是当我尝试执行jar(它有一个适当的主类指定)时会出现问题 - 它将无法找到一个实际上是传递依赖的库.所以我的项目A依赖于项目B,项目B依赖于jar C.程序集插件将正确压缩A,B和C,但jar插件在清单中不包含C,导致ClassNotFoundException.
我没有看到maven-jar-plugin中的任何选项让我指定需要传递依赖.
我是以正确的方式做到的吗?其他人设法将清单中的传递依赖项生成?也许我做错了什么或出了问题.任何帮助赞赏.
我看过帖子:
查看.jar文件的内容
以及
如何列出JAR文件中的文件?
但遗憾的是,我找不到一个好的解决方案来实际读取 JAR的内容(逐个文件).
此外,有人可以给我一个提示,或指向一个资源,我的问题在哪里讨论?
我只能想到一个不那么直接的方法来做到这一点:
我可以以某种方式将JAR资源列表转换为内部JAR URL列表,然后我可以使用openConnection()打开它.
我在哪里可以找到一个用于水壶的src-jar?我正在寻找一个包含Java文件的jar,我可以将我的IDE指向(例如junit-4.6-src.jar).
我有一个main方法,它创建一个逻辑类的实例
public static void main(String[] args) {
try {
Logic logic = new Logic(args[0]);
....... do some stuff here
} catch (Exception e) {
System.out.println("Error Encountered Details: " + e);
}
}
Run Code Online (Sandbox Code Playgroud)
问题是程序需要运行csv文件,我把它放在与.jar文件相同的目录中但是当我从命令行运行时我只是得到java.lang.arrayindexoutofbounds(0)错误
我究竟做错了什么
谢谢
在使用 构建我的 Spring Boot 应用程序时mvn clean package,正在构建的最终工件 myapp.jar 的 jar 名称中没有包含版本号。
我应该做什么改变才能使工件版本号成为 jar 的一部分。
pom.xml 的相关部分如下 -
<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/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.mycomp</groupId>
<artifactId>myapp</artifactId>
<version>2.6.0</version>
<name>myapp</name>
<description>
<![CDATA[]]>
</description>
<packaging>jar</packaging>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<java.version>1.8</java.version>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
<springboot.version>2.5.6</springboot.version>
</properties>
<dependencies>
<!-- Spring boot -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
<version>${springboot.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>5.3.12</version>
</dependency>
...
<dependency>
<groupId>org.apache.maven</groupId>
<artifactId>maven-artifact</artifactId>
<version>3.6.3</version>
</dependency>
</dependencies>
<build>
<finalName>gitlab-finder</finalName>
<pluginManagement>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.1</version>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<version>3.1.0</version>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>3.1.2</version> …Run Code Online (Sandbox Code Playgroud) 我尝试从 Visual Studio Code 中使用 JavaFX 的项目创建一个 jar 文件。当我在 VSCode 中运行该应用程序时,它工作正常,但是当我将其导出到 jar 文件时,它会抛出错误:
错误:加载主类 HelloFX 时发生 LinkageError java.lang.UnsupportedClassVersionError:未为 HelloFX 启用预览功能(类文件版本 65.65535)。尝试使用“--enable-preview”运行
所以我收集这个错误是因为我用比我的JRE更新的版本编译了jar文件..但是当我使用“javac -version”和“java -version”时我得到相同的(21.0.2)(这已经是在我的系统变量 JAVA_HOME 和 Path 变量中设置)..我还发现我需要在 launch.json 文件的 vmArgs 参数中添加 '--enable-preview' (现在全文为: "vmArgs": "-- enable-preview --module-path "C:/Program Files/Java/javafx-sdk-21.0.2/lib" --add-modules javafx.controls,javafx.fxml" 因为我还需要添加 javafx sdk )
我创建了一个新项目来显示我的 java 版本和 javaFX 版本
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Label;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;
public class HelloFX extends Application {
@Override
public void start(Stage stage) {
String javaVersion = System.getProperty("java.version");
String javafxVersion = …Run Code Online (Sandbox Code Playgroud) jar ×10
java ×8
ant ×2
api ×1
assemblies ×1
classpath ×1
command-line ×1
copy ×1
eclipse ×1
extract ×1
hibernate ×1
javafx ×1
kettle ×1
maven ×1
maven-2 ×1
maven-plugin ×1
pentaho ×1
signing ×1
spring ×1
spring-boot ×1