如何在JavaJAR内部包含SQL语句文件?

如何在JavaJAR内部包含SQL语句文件?,java,eclipse,Java,Eclipse,我正在尝试实现 我想对一个数据库运行数十条SQL语句。在字符串中构建语句变得越来越困难。我的想法是用一个文件代替它们(statements.sql),它非常容易编写和调试 然而,我有一个要求,我必须在一个可运行的JAR中包含所需的所有内容,所以这个.sql文件必须是一个内部资源(比如C#projects)。我不能简单地读取外部文件 上面的问题听起来似乎是我想要的正确想法,但无论我将.sql文件(src包或文件夹本身)放在何处,或者我是否“添加到构建路径”,我都会得到 java.lang.Null

我正在尝试实现

我想对一个数据库运行数十条SQL语句。在字符串中构建语句变得越来越困难。我的想法是用一个文件代替它们(statements.sql),它非常容易编写和调试

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

上面的问题听起来似乎是我想要的正确想法,但无论我将.sql文件(src包或文件夹本身)放在何处,或者我是否“添加到构建路径”,我都会得到

java.lang.NullPointerException
…当我运行此代码时

InputStream input = getClass().getResourceAsStream("/MySQL/src/com/package/statements.sql");
我的JavaIDE是Eclipse(Luna),运行在Debian7GNOME上,并且.sql文件当前位于source下的包中

我只需要一个大字符串来解析/处理文件的内容。如果有更好的方法,我希望能朝着正确的方向努力。我认为我的问题可能更多地是因为我不熟悉如何在Eclipse中实现这一点,而不是代码问题。要获取代码的“路径”字符串,我右键单击.sql文件并选择“属性”。文件的路径(相对于项目?)显示在那里,我正在复制/粘贴该路径

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

来自

路径要么必须是相对于给定类的,但不需要导航到树的后面,要么必须是绝对路径

所以你有两个选择:

  • 将文件放在类的相同位置,并使用
    getClass().getResourceAsStream(“statements.sql”)
  • 将文件放在根目录中,并使用
    getClass().getResourceAsStream(“\statements.sql”)
    getClass().getClassLoader().getResourceAsStream(“statements.sql”)

如果您使用hibernate check解析
SQL
。您可以添加一些stacktrace,您使用的是什么框架?您可能会发现
java SQL属性文件
很有用。谷歌这个。这里是我搜索中的一个链接——没有使用任何框架来实现这一点,现在它只是直接指向java.sql和java.io。我会查看你的链接。看到这个问题了吗