Java SP2-0310:无法打开文件.sql

Java SP2-0310:无法打开文件.sql,java,oracle,Java,Oracle,我从java程序中调用批处理文件,结果执行一些.sql文件。 批处理脚本如下所示: set part1= CREATE OR REPLACE DIRECTORY REPORT AS ' set total=%part1%%4'; echo %total% > DIR_REPORT.sql echo exit; >>DIR_REPORT.sql sqlplus %1/%2@%3 @./DIR_REPORT.sql sqlplus %1/%2@%3 @./PACKAGE_SCRIP

我从java程序中调用批处理文件,结果执行一些.sql文件。 批处理脚本如下所示:

set part1= CREATE OR REPLACE DIRECTORY REPORT AS '
set total=%part1%%4';
echo %total% > DIR_REPORT.sql
echo exit; >>DIR_REPORT.sql
sqlplus %1/%2@%3 @./DIR_REPORT.sql
sqlplus %1/%2@%3 @./PACKAGE_SCRIPTv2.sql
我的java代码是:

Runtime run = Runtime.getRuntime();
System.out.println("Start Running the batch file");
Process p = run.exec(new String[]{"cmd.exe","/c", "start", "C:/Users/sony/Documents/NetBeansProjects/CodeReview/src/codereview/install.bat",i,j,m,l});
System.out.println("Completed");
这是一个错误:

SP2-0310: unable to open file
正在执行使用批处理生成的第一个文件(DIR_REPORT),但未执行my PACKAGE_SCRIPTv2.sql,但会引发错误,请帮助我做什么


尽管手动从cmd运行批处理文件时,一切正常…

第一个脚本将在当前工作目录中创建和执行,因此它将始终存在(假设您有在其中创建的权限)。第二个也应该在当前工作目录中。那么,问题是,当前的工作目录是什么

看起来您希望它是
C:/Users/sony/Documents/NetBeansProjects/CodeReview/src/CodeReview/
,如果您在那里手动运行
.bat
,它工作正常(根据您所说);因此,当您从Java调用它时,它一定在其他地方。这要么是JVM启动时的工作目录,要么是主目录,我想——不太确定


您需要指定正确的目录,或者硬编码到脚本中,或者作为另一个参数传递。然后,您可能希望将
cd
复制到脚本中,以便在相同的已知位置创建
DIR\u REPORT.sql
;否则,您可以使用它创建到
包的完整路径。\u SCRIPTv2.sql

是的,问题是语句中定义的路径包含所有文件,但在执行时,脚本只会执行到:

“C:/Users/sony/Documents/NetBeansProjects/CodeReview”

这是cmd中显示的内容,所以我将文件放在这个目录中,它开始工作…不知道原因

提示:当您发现此类问题时,请正确查看错误消息,因为它会告诉您脚本失败时正在查看的位置,因此只需将文件放在该位置即可工作


享受\m/

您有权限访问该文件吗?是的,我有,但我如何检查?如果您在windows上,请右键单击该文件,然后单击“属性”。我有所有权限,我已验证…不知道原因。。。什么,它开始工作了,或者它一开始就在那个目录中查找?正如我在回答中所说,它看起来像JVM启动时的工作目录;也许您有一个快捷方式来启动设置该工作区域的NetBeans,或者启动项目时您就在该目录中。它可能会根据您启动的方式而改变,因此告诉脚本在哪里查看会更安全,不是吗?