Java 构建jar后无法运行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

我做了一个简单的实用程序。在里面我有一个exe文件要运行。我使用以下方法运行它:

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