有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java将bat文件放入jar文件中

我有一个java类,它使用bat文件执行命令。但是我在EclipseIDE中开发了它。它在那里工作得很好。但当我将其导出到jar文件中时,它找不到包含的bat文件。(给我一个例外)

eclipse中的文件结构如下 :

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

bat和ul医学博士。bat与src目录的级别相同。震动后,src文件夹消失

有人能帮我吗。 谢谢


共 (3) 个答案

  1. # 1 楼答案

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

    请注意,Jon Skeet是对的,虽然可以使用{}和{}(参见{a1}或在{a2}中找到它们)打开{}文件中的任何文件作为{}文件,但为了在内部执行{},必须首先提取{}文件

  2. # 2 楼答案

    这可能非常危险。处理球棒时一定要戴手套。它们咬人而且很痛。也试着找一个开口足够大的罐子,尽管蝙蝠几乎可以穿过任何一个洞

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

  3. # 3 楼答案

    为了执行该命令,您必须在之后提取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
    

    看看里面有什么