如何在JavaJAR内部包含SQL语句文件?
我正在尝试实现 我想对一个数据库运行数十条SQL语句。在字符串中构建语句变得越来越困难。我的想法是用一个文件代替它们(statements.sql),它非常容易编写和调试 然而,我有一个要求,我必须在一个可运行的JAR中包含所需的所有内容,所以这个.sql文件必须是一个内部资源(比如C#projects)。我不能简单地读取外部文件 上面的问题听起来似乎是我想要的正确想法,但无论我将.sql文件(src包或文件夹本身)放在何处,或者我是否“添加到构建路径”,我都会得到如何在JavaJAR内部包含SQL语句文件?,java,eclipse,Java,Eclipse,我正在尝试实现 我想对一个数据库运行数十条SQL语句。在字符串中构建语句变得越来越困难。我的想法是用一个文件代替它们(statements.sql),它非常容易编写和调试 然而,我有一个要求,我必须在一个可运行的JAR中包含所需的所有内容,所以这个.sql文件必须是一个内部资源(比如C#projects)。我不能简单地读取外部文件 上面的问题听起来似乎是我想要的正确想法,但无论我将.sql文件(src包或文件夹本身)放在何处,或者我是否“添加到构建路径”,我都会得到 java.lang.Null
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”)
SQL
。您可以添加一些stacktrace,您使用的是什么框架?您可能会发现java SQL属性文件
很有用。谷歌这个。这里是我搜索中的一个链接——没有使用任何框架来实现这一点,现在它只是直接指向java.sql和java.io。我会查看你的链接。看到这个问题了吗