访问Jar依赖项

时间:2011-12-23 02:05:53

标签: java file jar dependencies

我有一个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);

我甚至可以在线托管横幅图片,只需将其从那里拉出来,这样我就可以动态更新它。

1 个答案:

答案 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二进制文件中。