gpt4 book ai didi

java - 如何在 Java JAR 内部包含一个 SQL 语句文件?

转载 作者:行者123 更新时间:2023-11-30 11:16:00 25 4
gpt4 key购买 nike

我正在尝试实现 this SO question 的变体

我想对数据库运行数十条 SQL 语句。在字符串中构建语句变得越来越费力。我想到了为它们创建一个文件 (statements.sql),这非常容易编写和调试。

但是我有一个要求,我必须将所有需要的东西都包含在一个可运行的 JAR 中,所以这个 .sql 文件必须是一个内部资源(比如 C# 项目)。我不能简单地读取外部文件。

上面的 SO 问题听起来像是我想要的正确想法,但无论我将 .sql 文件放在哪里(src 包或文件夹本身),或者我是否“添加到构建路径”,我不断得到...

java.lang.NullPointerException

...当我运行这段代码时...

InputStream input = getClass().getResourceAsStream("/MySQL/src/com/package/statements.sql");

我的 Java IDE 是 Eclipse (Luna),在 Debian 7 GNome 上运行,.sql 文件当前位于源代码下的一个包中。

我只需要一个大字符串中的文件内容来进行解析/处理。如果有更好的方法来做到这一点,我将不胜感激朝着正确的方向前进。我认为我的问题可能更多地与我不熟悉如何在 Eclipse 中执行此操作有关,而不是代码问题。要获取代码的“路径”字符串,我右键单击 .sql 文件并选择“属性”。文件的路径(相对于项目?)显示在那里,我正在复制/粘贴它。

向 Eclipse 注册并使用该文件的正确方法是什么?非常感谢。

最佳答案

来自 this answers

路径要么必须是相对于给定类但不返回树的路径,要么必须是绝对路径。

所以你有两个选择:

  • 将文件放在类的相同位置,用getClass().getResourceAsStream("statements.sql")获取文件
  • 将文件放在根目录中,然后使用 getClass().getResourceAsStream("\statements.sql")getClass().getClassLoader().getResourceAsStream("statements. sql")

关于java - 如何在 Java JAR 内部包含一个 SQL 语句文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25099982/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com