我有一个jar文件,其中包含整个脚本所依赖的exe和横幅图像(jpg)。如何从自身(jar文件)访问和使用这两个依赖项?目前,jpg可通过以下方式访问:
BufferedImage getBanner = ImageIO.read(new File("banner.jpg"));
JLabel drawBanner = new JLabel(new ImageIcon(getBanner));
和exe访问:
String cmd = "exe [params]";
Runtime run = Runtime.getRuntime();
Process pr = run.exec(cmd);
我甚至可以在线托管横幅图片,只需将其从那里拉出来,这样我就可以动态更新它。
答案 0 :(得分:2)
jre的类加载器可以“查找”类路径中的任何文件。
添加外部程序,以便jar可以访问:
首先创建一个类加载器并使用ClassLoader动态获取资源,并让它处理文件位置的路径特定细节。因此......你会做这样的事情:
URL myExecutable =
MyClass.class.getClassLoader().getResource("executable/program.exe");
现在,您应该可以直接访问该程序,就好像它是任何其他文件一样。
File f=new File(myExecutable.toURI());
现在你可以用
来调用它Runtime.getRuntime().exec(f.getAbsolutePath());
<强> CAVEAT 强>
此时,问问自己为什么我在一个JAR文件中捆绑了一个?最好为每个操作系统平台提供一个单独的包,用zip文件。将jar和exe放在一个zip文件中 - 而不是将操作系统特定的可执行文件捆绑到java二进制文件中。