【问题标题】:How to make jar files that draw from a source folder如何制作从源文件夹中提取的 jar 文件
【发布时间】:2013-05-03 04:42:03
【问题描述】:

我最近一直想用 java 制作可执行的 jar 文件。使用 Eclipse 执行我的代码时,它运行良好。但是当我使用 Eclipse 将相同的代码导出为可运行的 jar 时,我的大多数 jar 都可以正常工作,除了从单独的源文件夹中提取的那些。

jar 将被制作,但在启动时它会尝试打开,然后只是说检查控制台是否存在可能的错误。我尝试使用命令“java -jar test.jar”通过控制台运行 jar。它说它无法访问罐子。有任何想法吗?顺便说一句,我在 macbook pro osX 上。谢谢!! picture of where my files are within eclipse

【问题讨论】:

  • 我不知道您所说的“从单独的源文件夹中绘制”是什么意思。要使用“java -jar”命令运行,您的默认目录需要与保存 jar 文件的目录相同,或者您需要指定 jar 文件的完整目录路径。如果您的代码尝试在仅存在于 eclipse 中的文件路径中打开文件(src 经常是这样的),那么您正在尝试使用默认情况下不在 jar 中创建的目录,这样代码就会失败。我在这方面有没有达到目标?
  • 我想是的。我可能把它们放在错误的地方,或者引用错误。我张贴了我的意思的图片。我用这个代码引用文件funny.jpg File funny= new File("resources/funny.jpg");试试 { Desktop.getDesktop().open(funny); } catch(IOException e) { e.printStackTrace(); }
  • 我不完全确定我将如何更改其中的任何内容以使其正常工作。也许我应该做一个与 jar 兼容的路径,而不是引用只存在于 eclipse 中的路径?
  • 那么,是 java 没有找到 jar... 还是 java 运行 jar 然后路径出现问题?
  • java 正在运行 jar,然后很可能路径出现问题

标签: java eclipse macos jar


【解决方案1】:

如果您有一个想要存储在 jar 中并从那里访问的文件,那么您实际上就不再有 Java 文件了。看看 Class.getResourceAsStream() 和 Class.getResource() - 第一个可以给你一个 InputStream 到(曾经是)文件,第二个返回一个 URL,可以用于图像之类的东西。请注意,可以相对于类的包/文件夹位置或相对于类路径根(通过将“/”放在资源名称的前面(“/resource/funny.jpg”))来访问正在访问的文件。

当您从命令行执行 jar 时,请注意您有一个名为“默认目录”的东西;它是您的命令默认执行的文件夹。如果您的 jar 不在默认目录中,则必须为您的 jar 指定一个有效的文件夹路径才能执行它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-12
    • 1970-01-01
    • 2012-06-16
    • 2016-07-14
    • 1970-01-01
    相关资源
    最近更新 更多