是否可以使用 Java 在 JAR 文件中添加 运行 个文件?
Is it possible run files in JAR file using Java?
我想在jar包中添加一个文件,但是这个是独立于java程序的文件,我可以运行它吗,如果我可以运行它,怎么可以我运行呢?你能推荐什么吗?
谢谢。
不可能; java 没有 运行 任意可执行文件;你的 OS 会。 Java 请求您的 OS 到 运行 一个可执行文件,但是 OSes 通常没有能力从 zip 文件中 运行 可执行文件。更不用说jmod文件了。
如果您的 java 应用程序可以自己读取和处理数据(例如:渲染一个带有 PNG 作为图像的 swing JLabel 对象),那么您可以这样做:
YourClass.class.getResource("open_url.png")
将为您提供指定文件的输入流,只要该文件位于 YourClass.class
所在的同一位置 - 即使它位于 jar 文件或 jmod 文件中。
但是,如果您有 .exe,则必须提取可执行文件,将其保存到 tmp 目录,然后请求 OS 到 运行 该文件。将可执行文件保存到临时目录有点棘手(如果它是全局临时目录,其他一些用户可能会在中间覆盖您的可执行文件,因此 运行 它的代码在您的进程中,您会看到这是安全的大事件)。但是,你可以做到。请注意,这当然会使您的应用程序不再独立于平台。
我想在jar包中添加一个文件,但是这个是独立于java程序的文件,我可以运行它吗,如果我可以运行它,怎么可以我运行呢?你能推荐什么吗?
谢谢。
不可能; java 没有 运行 任意可执行文件;你的 OS 会。 Java 请求您的 OS 到 运行 一个可执行文件,但是 OSes 通常没有能力从 zip 文件中 运行 可执行文件。更不用说jmod文件了。
如果您的 java 应用程序可以自己读取和处理数据(例如:渲染一个带有 PNG 作为图像的 swing JLabel 对象),那么您可以这样做:
YourClass.class.getResource("open_url.png")
将为您提供指定文件的输入流,只要该文件位于 YourClass.class
所在的同一位置 - 即使它位于 jar 文件或 jmod 文件中。
但是,如果您有 .exe,则必须提取可执行文件,将其保存到 tmp 目录,然后请求 OS 到 运行 该文件。将可执行文件保存到临时目录有点棘手(如果它是全局临时目录,其他一些用户可能会在中间覆盖您的可执行文件,因此 运行 它的代码在您的进程中,您会看到这是安全的大事件)。但是,你可以做到。请注意,这当然会使您的应用程序不再独立于平台。