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

标签 java eclipse

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

相关文章:

java - 如何按字母顺序对文本文件进行排序?

java - 使用 Netbeans 设计 Java GUI

java - maven 可以告诉 eclipse 忽略生成代码中的警告吗?

android - 无法在设备 'emulator-5554' 上安装 apk : timeout

java - 如何将 servlet 的响应发送到客户端?

java - Java 中的节省时间 (int) 从它停止的地方开始?

java - Android - 创建自定义 xml 属性,如 onClick?

更改目标 sdk 时 Android 项目不运行

java - 如何阻止 Eclipse 在数组实例化及其值之间创建新行(Ctrl + Shift + F)?

android - 在 Eclipse 中调试 Android NDK C/C++ 代码 - 断点未命中