将bat文件放在jar文件中

时间:2009-05-01 05:25:10

标签: java eclipse batch-file

我有一个使用bat文件执行命令的java类。但是我在Eclipse IDE中开发了它。它在那里工作正常。但是当我将它导出到jar文件中时,它无法找到包含的bat文件。(给我一个IOException)

eclipse中的文件结构如下 :

Project1
---->src
------>com.myproj
-------->BatFileRead.java
----md.bat
----ul.bat

md.bat和ul.bat与src目录的级别相同。震撼之后,src文件夹消失了。

有人可以帮我解决这个问题。 感谢

3 个答案:

答案 0 :(得分:5)

为了执行命令,您必须在之后提取bat文件。您无法运行jar文件中的可执行文件。基本上,您需要将jar文件中的批处理文件条目作为输入流打开,并将数据复制到磁盘上的FileOutputStream。在文件系统上存在适当的独立文件之前,您将无法执行它。

如果您已经尝试提取它,则可能会稍微错误地使用getResourcegetResourceAsStream。这很容易做到,因为这取决于您是在调用ClassLoader.getResourceAsStream还是Class.getResourceAsStream。第一个只使用绝对路径(隐式),第二个可以使用绝对路径或相对路径。例如,在您的情况下,您需要:

BatFileRead.class.getResourceAsStream("/md.bat")

BatFileRead.class.getClassLoader().getResourceAsStream("md.bat")

您是否检查过bat文件肯定会在jar文件中结束?只需用

列出内容即可
jar tvf file.jar

看看那里有什么。

答案 1 :(得分:1)

这可能非常危险。处理BAT时务必戴上手套。他们咬人,非常痛苦。同时尝试获得具有足够大开口的罐子,尽管蝙蝠几乎可以穿过任何一个洞。

祝你好运,不要在家里试试。这是由专业人士完成的。

答案 2 :(得分:0)

尝试将file.jar复制到file.zip,然后打开file.zip(例如,只需双击,或使用例如7-Zip)。你能在里面找到你的.bat文件吗?如果.bat文件不存在,则必须将.bat文件添加到Eclipse项目中,然后在Eclipse中重建。如果.bat文件存在,但您仍然从IOException应用程序中打开了.java,那么请发布触发IOException的代码段,并请提供file.zip的完整列表(通过将file.zip解压缩到C:\testdir并在命令行中运行dir /s C:\testdir来获取列表。)

请注意,Jon Skeet是正确的,虽然可以使用.jarInputStreamjava.lang.Class.getResourceAsStream java.lang.ClassLoader.getResourceAsStream打开.bat文件中的任何文件(请参阅{{ 3}}或在tutorial中找到它们,但是为了在里面执行.jar文件,你必须先提取{{1}}文件。