设置H2 init运行脚本时出现问题。使用Java模块化系统时,如果脚本不在类路径根文件夹中,则找不到文件

本文介绍了设置H2 init运行脚本时出现问题。使用Java模块化系统时,如果脚本不在类路径根文件夹中,则找不到文件的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!,以下是有关如何从资源文件夹初始化运行脚本的问题的接受答案:problem with INIT=RUNSCRIPT and relative paths。,连接字符串:,但是,我得到异常,即使文件存在,也找不到文件。,异常:,尝试使用getResource(DatabaseManager类位于desktop.core.database包中)访问文件时会发现文件已存在:,已在Windows(10)和Linux(Kubuntu)平台上试用,并使用2.1.210版的H2。,更新#1,文件在根类路径文件夹classpath:databaseCreation.sql中找到,但在某个子文件夹(如桌面/core/数据库)下仍找不到。,在第一个子文件夹前追加”/”无效。,已尝试将SQL文件放入所有文件夹。,'classpath:desktop/core/database/databaseCreation.sql'不起作用,'classpath:desktop/core/databaseCreation.sql'不起作用,'classpath:desktop/databaseCreation.sql'不起作用,只有这样才有效,'classpath:databaseCreation.sql',不使用类路径:,在不使用类路径的情况下,文件可以位于任何子文件夹中,但这样,我需要使用文件的绝对路径:,将问题保留为打开状态,因为引用的问题的答案已过期,该答案在当前H2版本上不起作用,并且希望了解如何使用classpath使其起作用。,更新2,为了进行复制,您需要在项目中使用Java模块化系统(MODULE-INFO.Java)。,更新:(模块-info.Java),根据您的评论,您的原始设置使用的是JDK 9+模块。这是一个复杂而令人困惑的话题。最简单的方法就是删除MODULE-info.Java,而不使用模块。如果您打算使用模块并将资源保存在单独的目录(模块)中,则有多个选项,但没有一个明确的选择。也许最简单的选择是打开包含该资源的"包。在我的本地测试中,类似这样的内容起作用了:,更多信息:,https://www.oracle.com/corporate/features/understanding-java-9-modules.html
Loading classes and resources in Java 9
Accessing resource files in a java jigsaw module
How to access resource using class loader in Java 9
Accessing resource files from external modules,原始,我无法使用非常简单的Maven设置复制您的问题,该设置仅将H2运行时作为依赖项(相同版本,2.1.210)以及JUnit5。它按预期工作。,堆栈跟踪显示这是作为一个测试从Eclipse中运行的。如果我手动添加src/main/resources作为Java构建路径源文件夹,不包括**/,这将排除资源的子目录,我可以在Eclipse中准确地复制您的问题。,如果您使用的是maven,或许可以尝试使用mvn test在命令行上运行,以验证它不是您的Eclipse安装程序。,否则,您将需要发布更多信息以获取帮助。,这篇关于设置H2 init运行脚本时出现问题。使用Java模块化系统时,如果脚本不在类路径根文件夹中,则找不到文件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,
返回顶部
跳到底部

Copyright 2011-2024 南京追名网络科技有限公司 苏ICP备2023031119号-6 乌徒帮 All Rights Reserved Powered by Z-BlogPHP Theme By open开发

请先 登录 再评论,若不是会员请先 注册