可执行Jar,打包资源传递给命令

时间:2015-02-02 01:24:20

标签: java executable-jar

我正在创建我的java程序,它在pc上执行一些命令(例如,它运行imagemagick)。

我没有遇到任何问题,我完成了编程部分;在我的src中,我添加了一个资源文件夹,其中包含我在调用imagemagick时使用的一些文件,souch作为ttf字体和icc配置文件:我希望它们在那里,所以一切都在同一个包中,它增加了可伸缩性。 在eclipse中,我正在进行测试,运行程序时没有问题。在其中我有以下几行:

String colorprofileString = MyClass.class.getResource("resources/srgb.icc").toString().replace("file:/", "");

它为我提供了资源文件的路径,类似C:\path\to\bin\resources\srgb.icc,可以通过imagemagick convert访问,以编辑一些图片。 我在eclipse中使用它并且它有效。

现在,我创建了一个可执行jar,在其中我可以看到资源文件夹及其中的所有文件,但我该如何使用它们?对imagemagick的调用是String CMD="C:\path\to\im\convert.exe sourceimg.jpg -profile" + colorprofileString + "targetimg.jpg"

我无法弄清楚如何修复它,或者是否还有其他方法可以解决这个问题!

非常感谢你的帮助,

的Mirko

1 个答案:

答案 0 :(得分:0)

“文件”的内容可能无法用作文件。请记住,您正在处理可能属于JAR文件或其他类型资源的类和资源。类加载器不必为资源提供文件句柄,例如,jar文件可能尚未扩展到文件系统中的单个文件中。

如果java.io.File绝对必要,可以通过将流复制到临时文件并执行相同的操作来获取java.io.File所能做的任何事情