我正在尝试实现 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/