Java 构建jar后无法运行exe
我做了一个简单的实用程序。在里面我有一个exe文件要运行。我使用以下方法运行它:Java 构建jar后无法运行exe,java,windows,netbeans,runtime-error,exe,Java,Windows,Netbeans,Runtime Error,Exe,我做了一个简单的实用程序。在里面我有一个exe文件要运行。我使用以下方法运行它: Runtime.getRuntime().exec(this.getClass().getResource("filename.exe").getPath()); 当我从ide(Netbeans)运行程序时,我工作得非常好 但是,当我尝试在构建后(即从构建时创建的jar)使用上述命令运行exe时,它根本不起作用 我也试着运行这个: Desktop.getDesktop().open(new File("filen
Runtime.getRuntime().exec(this.getClass().getResource("filename.exe").getPath());
当我从ide(Netbeans)运行程序时,我工作得非常好
但是,当我尝试在构建后(即从构建时创建的jar)使用上述命令运行exe时,它根本不起作用
我也试着运行这个:
Desktop.getDesktop().open(new File("filename.exe"))
但是再也没有用了
请帮助尝试使用一个用例,发现getResource搜索路径“file:/path/to/thejar.jar!filename.exe”,并且无法使用jar中的exe 尝试修改类路径,但失败
参考spring的策略,它使用URL连接读取jar中的配置文件, 我认为解决办法可以是:
- 使用getResourceAsStream获取InputStream
- 将jar中的exe表单复制到带有输入流的临时文件中
- 运行位于jar外部的temp exe文件
这是可行的(编译到jar时是可以的,但IDE中是NOK,因为“getResource”搜索在不同的位置): 项目的文件结构:
C:\USERS\REN MIN\DEV ENV\JAVA\WORKSPACE\LOADRESOURCE
│ .classpath
│ .project
│ pom.xml
│
├─.settings
│ org.eclipse.jdt.core.prefs
│ org.eclipse.m2e.core.prefs
│
├─src
│ ├─main
│ │ ├─java
│ │ │ └─me
│ │ │ └─mren
│ │ │ └─loadresource
│ │ │ Runner.java
│ │ │
│ │ └─resources
│ │ filename.exe
│ │
│ └─test
│ ├─java
│ └─resources
└─target
│ loadresource-0.0.1-SNAPSHOT.jar
│
├─classes
│ │ filename.exe
│ │
│ └─me
│ └─mren
│ └─loadresource
│ Runner.class
│
├─maven-archiver
│ pom.properties
│
├─surefire
└─test-classes
jar中的文件结构:
E:\TEST\RESULT
│ .classpath
│ .project
│ pom.xml
│
├─me
│ └─mren
│ └─loadresource
│ Runner.class
│
├─META-INF
│ MANIFEST.MF
│
└─resources
filename.exe
它显示了什么错误?可能是类路径问题
E:\TEST\RESULT
│ .classpath
│ .project
│ pom.xml
│
├─me
│ └─mren
│ └─loadresource
│ Runner.class
│
├─META-INF
│ MANIFEST.MF
│
└─resources
filename.exe