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

时间:2013-12-04 12:20:20

标签: 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_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)生成的第一个文件但是我的PACKAGE_SCRIPTv2.sql没有被执行但是引发了错误,请帮我做什么。

虽然从cmd手动运行批处理文件时一切正常......

2 个答案:

答案 0 :(得分:0)

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

看起来你期望它是C:/Users/sony/Documents/NetBeansProjects/CodeReview/src/codereview/,如果你在那里手动运行.bat它就可以了(从你所说的);因此,当你从Java调用它时,它必须在其他地方。那将是您的JVM启动时的工作目录,或者您的主目录,我认为 - 不太确定。

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

答案 1 :(得分:0)

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

“C:/用户/索尼/文档/的NetBeansProjects /代码审查”

这是cmd中显示的内容,因此我将文件放入此目录并开始工作......不知道原因。

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

享受\ m /