Java SP2-0310:无法打开文件.sql
我从java程序中调用批处理文件,结果执行一些.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
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,或者启动项目时您就在该目录中。它可能会根据您启动的方式而改变,因此告诉脚本在哪里查看会更安全,不是吗?