Tag: executable jar

Java-导出到jar / i / o问题

我在Eclipse(使用JDK7的Juno)上工作,程序运行(在Eclipse上)很好。 我的问题是: URL imageURL = new URL(“http://sofzh.miximages.com/java/new_sizes_ocr.png”); RenderedImage img = ImageIO.read(imageURL); File outputfile = new File(“saved.png”); ImageIO.write(img, “png”, outputfile); 但是当我将项目导出到jar文件并尝试通过Windows(7-64位)命令行运行时,会出现以下错误: Exception in thread “main” java.lang.reflect.InvocationTargetException at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at org.eclipse.jdt.internal.jarinjarloader.JarRsrcLoader.main(JarRsrcLoader.java:58) Caused by: java.util.ServiceConfigurationError: javax.imageio.spi.ImageReaderSpi: Providercom.sun.media.imageioimpl.plugins.jpeg.CLibJPEGImageReaderSpi could not be instantiated: java.lang.IllegalArgumentException: vendorName == null! at java.util.ServiceLoader.fail(Unknown Source) […]

如何获取Java程序的可执行文件?

可能重复: 如何将我的java程序转换为.exe文件? 我正在尝试将用Java 6编写的程序导出到JAR文件。 我的项目包含一个来自Internet的Java库和一些Java源文件。 当我创建JAR文件时,默认情况下应该设置类路径,最终用户应该能够直接从命令提示符或其他来源运行项目。 我的目标是将所有内容导出到JAR文件,如果可能的话。 此外,程序输出应在命令提示符下给出。 如何以这种方式导出我的程序?

创建一个用于从Java / Clojure执行的jar文件

我想创建一个用java和clojure实现的jar文件。 这是我采取的步骤。 让我的java代码调用clojure代码 我可以生成一个包含clojure核心和我的clojure代码的jar文件(ThingOne-1.0.0-SNAPSHOT-standalone.jar),我还可以获得一个使用jar文件中的clojure代码的类文件(HelloJava.class)通过这个网站 – http://walkwithoutrhythm.net/blog/2012/03/26/how-to-call-clojure-1-dot-3-functions-from-java/ java代码如下:clojure代码作为ThingOne导入 import ThingOne.*; public class HelloJava { public static void main(String[] args) { System.out.println(“Hello from Java!”); core.foo (12345); } } 我可以运行此命令来使用代码: java -cp ‘ThingOne-1.0.0-SNAPSHOT-standalone.jar:.’ HelloJava 制作一个jar文件 我制作了一个具有这种结构的jar目录。 ├── MANIFEST.MF └── jar └── ThingOne-1.0.0-SNAPSHOT-standalone.jar MANIFEST.MF的内容是 Manifest-Version: 0.1 Main-Class: HelloJava Class-Path: jar/ThingOne-1.0.0-SNAPSHOT-standalone.jar 我可以使用jar cvfm hello.jar jar/MANIFEST.MF HelloJava.class获取一个jar文件。 但是,clojure jar文件(ThingOne-1.0.0-SNAPSHOT-standalone.jar)不包含在此jar文件中,只是引用了。 如何创建一个包含java类文件和clojure jar文件的jar文件?

使用可执行Jar时找不到Spring-Boot资源

我再次遇到一个奇怪的问题,希望有人可以提供帮助。 我有一个spring boot后端模块,在eclipse中运行良好,在application.java中启动main时应用程序是可执行的。 一切都很好。 我的应用程序使用csv-files将示例数据导入数据库,这些文件包含在src / main / resources文件夹中。 如上所述,在eclipse中启动时一切正常。 现在我想将它作为可执行jar执行,应用程序开始启动然后无法启动,因为它无法找到csv文件。 它打印出来的路径,它查找文件的位置是正确的,csv文件包含在jar中。 该模块的Pom如下所示: 4.0.0 at.company.bbsng bbsng-import 0.1.0-SNAPSHOT bbsng-import-backend bbsng-import-backend at.company.bbsng.dataimport.Application org.springframework.boot spring-boot-starter-batch spring-boot-starter-logging org.springframework.boot org.springframework.boot spring-boot-starter-log4j org.springframework.boot spring-boot-starter-test test … org.springframework.boot spring-boot-maven-plugin repackage csv文件的路径在propery文件中配置如下: # EXAMPLE PATH csv.path=config/csv/ java配置文件的部分如下: … @Value(“${csv.path}”) private String csvExamplePath; @Bean public Resource addressResource() { return new ClassPathResource(csvExamplePath + CSV_ADDRESS); } […]

修改执行Jar文件

Hello Stack Overflow朋友。 我有一个简单的问题,我担心没有一个简单的解决方案,我需要建议如何继续。 我正在开发一个打包为可执行JAR的Java应用程序,但它需要在执行期间修改其一些JAR文件内容。 在这个阶段,我遇到了一个问题,因为某些操作系统会锁定文件以防止写入文件。 在应用程序退出时,用户必须看到jar文件的更新版本,尽管我可以非常灵活地了解如何实现这一点。 清洁高效的解决方案显然是可取的,但便携性是唯一的硬性要求。 以下是我可以看到解决问题的三种方法,随意评论或建议其他方法。 告诉Java解锁JAR文件进行编写(这似乎不太可能,但它将是最简单的解决方案) 在应用程序启动时将可执行类文件复制到临时文件,使用类加载器加载这些文件并从初始JAR文件中卸载这些文件。(对类加载器没有太多经验,但希望JVM能够足够聪明地实现原来的JAR不再使用,所以解锁它) 将第二个可执行JAR文件放入First中,在启动时将内部jar提取到e临时文件,使用复制的内部JAR调用新的java进程并将其传递给外部JAR的位置,第一个进程退出,第二个进程修改外部jar uninumbered。(这将工作,但我不确定有一个平台独立的方式,一个Java应用程序调用另一个) 我知道这是一个奇怪的问题,但任何帮助将不胜感激。

使用Java + Scala + Slick2D时“无法从给定的启动配置中找到主要方法”

我有一个项目,我正在使用Java + Scala + Slick2D。 从日食开始,项目本身运行良好。 但是当我尝试制作一个jar文件时,它只是拒绝工作。 这是我在尝试将其导出为Runnable jar时遇到的错误: 如果我尝试导出只是一个Jar文件,它将无法找到主类: 当然,游戏中有一个主要类.TicTacGame。 但它拒绝承认它。 我尝试用简单的Hello World项目创建一个可执行文件,它运行正常。 它甚至可以检测到主类。 为什么Eclipse在这种情况下没有检测到主类? PS:我还尝试提取创建的.jar文件,编辑manifest.mf文件以添加Main-Class:game.TicTacGame,输入两个新行并重新创建jar。 然后它给了我一个损坏的jar文件错误。 我在我的智慧结束,并希望在这方面有任何帮助。 我正在使用带有Eclipse Juno,Java 1.7和Scala 2.10的Windows 7 x64 编辑:Main类是Java

如何打包具有多个.jar库的applet?

我正在从一个大规模的现有项目(Vizster)创建一个Java applet。 我在Mac OS X上使用NetBeans 6.7.1和JDK 1.5。 我试图从它的单输出.jar文件运行applet,但是当我这样做时,它在Firefox的屏幕底部显示“applet loaded”,并且java控制台中没有任何内容,但是没有显示在小程序的窗口。 我之前在Firefox中遇到过不同的错误,包括“appletNotLoaded:ClassDefNotFoundError”等错误以及安全错误,但我的java控制台中从未有任何输出。 这是applet的html文件: 其中zuve.ZuveApplet.class是我的main方法所在的位置,“ZuveApplet.jar”是输出jar文件的名称。 这是ZuveApplet.java,主要方法类: package zuve; import vizster.Vizster; import vizster.VizsterLib; import java.applet.Applet; public class ZuveApplet extends Applet { public static final String DEFAULT_START_UID = “186297”; @Override public void init() { new Vizster(); } public static void main(String[] argv) { VizsterLib.setLookAndFeel(); //String startUID = argv.length > 0 […]

可执行jar中的“System.out.println()”会发生什么?

假设我已经从我使用过的代码中创建了一个executable jar System.out.println() 当我们运行可执行jar时,没有控制台。 那么,这条线会发生什么? java如何处理这种情况? 编辑01 : 注意 :情况是当我不使用控制台运行jar或任何控制台与它关联时。 编辑02 :让事情更清晰: 我知道没有任何东西可以在任何地方打印,因为没有控制台..! 我想知道java在这种情况下如何处理这一行? 生成可执行jar的字节码时是否省略了这一行? 或者,当没有控制台时,这条线是否被忽略了? 还是什么……

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

我有一个JAR文件,其中包含应用程序以及该应用程序的配置文件。 应用程序从类路径加载配置文件(使用ClassLoader.getResource() ),并使用烘焙到JAR文件中的配置文件完全满足其依赖关系。 有时我希望应用程序以稍微不同的配置运行(特别是我想覆盖JDBC URL以指向不同的数据库)所以我创建了一个新的配置文件,将其存储在正确的目录结构中(这意味着在classpath条目的目录/config ),我想做这样的事情: java -cp new-config:. -jar application.jar 但我无法让类路径在应用程序JAR的内容之前获得new-config路径条目。 是否硬编码JAR的内容始终是类路径中的第一件事?

如何从可执行jar中的main()运行TestNG测试?

我有一个可执行的JAR,它包含所有依赖项和测试类。 我已经确认在执行jar时会调用main()方法。 我正在尝试向main()添加代码,以便我可以运行特定的TestNG测试类。 从TestNG.org上的文档来看,这似乎就是这样做的: TestListenerAdapter tla = new TestListenerAdapter(); TestNG testng = new TestNG(); testng.setTestClasses(new Class[] { com.some.path.tests.MyTests.class }); testng.addListener(tla); testng.run(); 我的文件夹结构很典型: /src/main/java/Main.java /src/test/java/com/some/path/tests/MyTests.java 但是,当我尝试编译它时,我收到此错误: java: /src/main/java/Main.java:46: package com.some.path.tests does not exist 无论如何我可以改变我的项目,以便main()中的testng.setTestClasses()可以访问测试类吗?