嗯,我尝试了这么多的方法来创建可执行jar,但4个小时后我放弃了。我正在尝试用我的项目制作可执行的jar文件,其中主类在控制器中。基本上,我尝试使用export/runnable JAR文件,并使用各种选项,包括生成ant脚本。我在终端总是有类似的错误
当我用终端运行时
java-jar fruitstore.jar
bmj@OZ:~/Documents$ java -jar fruitStoreApp.jar
java.io.FileNotFoundException: customers.ser (No such file or directory)
at java.io.FileInputStream.open(Native Method)
at java.io.FileInputStream.<init>(FileInputStream.java:138)
at java.io.FileInputStream.<init>(FileInputStream.java:93)
at model.Shop.loadCustomers(Shop.java:250)
at model.Shop.<init>(Shop.java:121)
at model.Shop.getInstance(Shop.java:140)
at model.Model.<init>(Model.java:12)
at GUI.CustomerMainPanel.<init>(CustomerMainPanel.java:24)
at GUI.MainMenuGUI.<init>(MainMenuGUI.java:50)
at GUI.MainMenuGUI.getInstance(MainMenuGUI.java:35)
at model.View.<init>(View.java:49)
at model.Controller.<init>(Controller.java:42)
at model.Controller.main(Controller.java:805)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:483)
at org.eclipse.jdt.internal.jarinjarloader.JarRsrcLoader.main(JarRsrcLoader.java:58)
java.io.FileNotFoundException: users.ser (No such file or directory)
at java.io.FileInputStream.open(Native Method)
at java.io.FileInputStream.<init>(FileInputStream.java:138)
at java.io.FileInputStream.<init>(FileInputStream.java:93)
at model.Shop.loadUsers(Shop.java:210)
at model.Shop.<init>(Shop.java:122)
at model.Shop.getInstance(Shop.java:140)
at model.Model.<init>(Model.java:12)
at GUI.CustomerMainPanel.<init>(CustomerMainPanel.java:24)
at GUI.MainMenuGUI.<init>(MainMenuGUI.java:50)
at GUI.MainMenuGUI.getInstance(MainMenuGUI.java:35)
at model.View.<init>(View.java:49)
at model.Controller.<init>(Controller.java:42)
at model.Controller.main(Controller.java:805)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:483)
at org.eclipse.jdt.internal.jarinjarloader.JarRsrcLoader.main(JarRsrcLoader.java:58)
java.io.FileNotFoundException: suppliers.ser (No such file or directory)
at java.io.FileInputStream.open(Native Method)
at java.io.FileInputStream.<init>(FileInputStream.java:138)
at java.io.FileInputStream.<init>(FileInputStream.java:93)
at model.Shop.loadSuppliers(Shop.java:190)
at model.Shop.<init>(Shop.java:123)
at model.Shop.getInstance(Shop.java:140)
at model.Model.<init>(Model.java:12)
at GUI.CustomerMainPanel.<init>(CustomerMainPanel.java:24)
at GUI.MainMenuGUI.<init>(MainMenuGUI.java:50)
at GUI.MainMenuGUI.getInstance(MainMenuGUI.java:35)
at model.View.<init>(View.java:49)
at model.Controller.<init>(Controller.java:42)
at model.Controller.main(Controller.java:805)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:483)
at org.eclipse.jdt.internal.jarinjarloader.JarRsrcLoader.main(JarRsrcLoader.java:58)
java.io.FileNotFoundException: stocks.ser (No such file or directory)
at java.io.FileInputStream.open(Native Method)
at java.io.FileInputStream.<init>(FileInputStream.java:138)
at java.io.FileInputStream.<init>(FileInputStream.java:93)
at model.Shop.loadStock(Shop.java:230)
at model.Shop.<init>(Shop.java:124)
at model.Shop.getInstance(Shop.java:140)
at model.Model.<init>(Model.java:12)
at GUI.CustomerMainPanel.<init>(CustomerMainPanel.java:24)
at GUI.MainMenuGUI.<init>(MainMenuGUI.java:50)
at GUI.MainMenuGUI.getInstance(MainMenuGUI.java:35)
at model.View.<init>(View.java:49)
at model.Controller.<init>(Controller.java:42)
at model.Controller.main(Controller.java:805)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:483)
at org.eclipse.jdt.internal.jarinjarloader.JarRsrcLoader.main(JarRsrcLoader.java:58)
java.io.FileNotFoundException: sales.ser (No such file or directory)
at java.io.FileInputStream.open(Native Method)
at java.io.FileInputStream.<init>(FileInputStream.java:138)
at java.io.FileInputStream.<init>(FileInputStream.java:93)
at model.Shop.loadSales(Shop.java:150)
at model.Shop.<init>(Shop.java:126)
at model.Shop.getInstance(Shop.java:140)
at model.Model.<init>(Model.java:12)
at GUI.CustomerMainPanel.<init>(CustomerMainPanel.java:24)
at GUI.MainMenuGUI.<init>(MainMenuGUI.java:50)
at GUI.MainMenuGUI.getInstance(MainMenuGUI.java:35)
at model.View.<init>(View.java:49)
at model.Controller.<init>(Controller.java:42)
at model.Controller.main(Controller.java:805)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:483)
at org.eclipse.jdt.internal.jarinjarloader.JarRsrcLoader.main(JarRsrcLoader.java:58)
java.io.FileNotFoundException: orders.ser (No such file or directory)
at java.io.FileInputStream.open(Native Method)
at java.io.FileInputStream.<init>(FileInputStream.java:138)
at java.io.FileInputStream.<init>(FileInputStream.java:93)
at model.Shop.loadOrders(Shop.java:170)
at model.Shop.<init>(Shop.java:127)
at model.Shop.getInstance(Shop.java:140)
at model.Model.<init>(Model.java:12)
at GUI.CustomerMainPanel.<init>(CustomerMainPanel.java:24)
at GUI.MainMenuGUI.<init>(MainMenuGUI.java:50)
at GUI.MainMenuGUI.getInstance(MainMenuGUI.java:35)
at model.View.<init>(View.java:49)
at model.Controller.<init>(Controller.java:42)
at model.Controller.main(Controller.java:805)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:483)
at org.eclipse.jdt.internal.jarinjarloader.JarRsrcLoader.main(JarRsrcLoader.java:58)
Exception in thread "main" java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:483)
at org.eclipse.jdt.internal.jarinjarloader.JarRsrcLoader.main(JarRsrcLoader.java:58)
Caused by: javax.imageio.IIOException: Can't read input file!
at javax.imageio.ImageIO.read(ImageIO.java:1301)
at GUI.WelcomeScreenGUI.<init>(WelcomeScreenGUI.java:33)
at model.View.<init>(View.java:51)
at model.Controller.<init>(Controller.java:42)
at model.Controller.main(Controller.java:805)
... 5 more
提前感谢您的迅速回复
在检查了您的代码之后,我看到您已经设置了文件名,并且您正在使用FileInputStream
来读取文件系统。
private String saleFile = "sales.ser";
...
public void loadSales(String inPutFile) {
try {
FileInputStream fileIn = new FileInputStream(inPutFile);
因此,程序将在当前工作目录中查找sale.ser
。在您的IDE中,工作目录通常是项目根目录,也就是您的文件所在的地方,这就是它工作的原因。
所以既然你不能更改代码,这里有一些建议。
@echo off
setlocal
if "%JAVACMD%" == "" set JAVACMD=%JAVA_HOME%\bin\java.exe
if "%FRUITSTAND_HOME%" == "" set FRUITSTAND_HOME=%~dp0
cd "%FRUITSTAND_HOME%"
"%JAVACMD%" -cp "%FRUITSTAND_HOME%\lib\*" -jar "%FRUITSTAND_HOME%\fruitStoreApp.jar"
endlocal
问题内容: 我想用Java构建可运行的jar。我需要在jar中包含一些文件,以便在执行jar时会自动从java类读取文件。因此,我在项目中创建了一个文件夹,并从项目中引用了这些文件。我按照一些教程创建了jar文件,但是无法在jar文件中包含这些外部文件。请让我考虑使用外部文件创建可运行的jar。 我的文件结构是 我访问 的abc.txt 在 test1.java 类。我的代码是 使用eclipse
我想用Java构建一个可运行的jar。我需要在jar中包含一些文件,这样当我执行jar时,文件就会自动从java类中读取。因此,我在项目中创建了一个文件夹,并从项目中引用了这些文件。我按照一些教程创建了jar文件,但我不能在我的jar文件中包含这些外部文件。请允许我使用外部文件创建可运行的jar。 当我使用eclipse导出选项创建可执行jar时,我无法看到jar内部的FileFolder目录。请
我在NetBeans下开发了一个JavaFX应用程序,需要JRE8u60和一些外部库(jar和dll)以及一个“SQLite”数据库文件才能运行。我正在寻找一种方法来创建一个可执行文件或安装程序,它包括(或安装)这个版本的JRE和所需的库。 首先,我尝试了NetBeans本机打包程序,如https://NetBeans.org/kb/docs/java/native_pkg.html#fx所示,但
我正在尝试创建一个包含以下项目内容的jar文件 项目 user_interface(包文件夹,包括与GUI相关的所有.类) function_operations(包文件夹,包括与操作相关的所有.类) 声音(文件夹包括所有声音文件) 图标(包括所有图像和图标) jar(包括所有外部jar文件) manifest.txt(有一行*main-class:user_interface.messenger
我正在尝试制作一个.jar文件(这是我第一次),我很困惑。我了解如何使用命令提示符创建一个简单的jar文件,但对于我的程序,我导入了JavaMail API和我创建的另一个库(名为ArrayLibrary,其中填充了排序方法)。我如何在一个jar文件中创建这些?
问题内容: 大家好,菜鸟Java问题。 我有一个Java项目,并且想在可执行jar中包含一个文本文件。现在,该文本文件位于默认程序包中。 InputFlatFile currentFile =新的InputFlatFile(“ src / theFile.txt”); 正如您使用src所看到的那样,我使用该行抓取文件。但是,这不适用于可执行jar。 有人可以让我知道如何将文件保存在可执行jar中,