java SP20310:无法打开文件。sql
我从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_报告)生成的第一个文件,但我的包_SCRIPTv2除外。sql未被执行,但引发错误,请帮助我做什么
虽然当从cmd手动运行批处理文件时,一切正常
# 1 楼答案
第一个脚本是在当前工作目录中创建和执行的,因此它将始终存在(假设您有在那里创建的权限)。第二个也应该在当前工作目录中。那么,问题是,当前的工作目录是什么
看起来您希望它是
C:/Users/sony/Documents/NetBeansProjects/CodeReview/src/codereview/
,如果您在那里手动运行.bat
,它工作正常(根据您所说的);因此,当您从Java调用它时,它一定在其他地方。这要么是JVM启动时的工作目录,要么是主目录,我想——不太确定您需要指定正确的目录,或者硬编码到脚本中,或者作为另一个参数传递。然后,您可能希望将
cd
添加到脚本中,以便在相同的已知位置创建DIR_REPORT.sql
;否则,您可以使用它创建PACKAGE_SCRIPTv2.sql
的完整路径# 2 楼答案
是的,问题是语句中定义的路径包含所有文件,但在执行时,脚本只会执行到:
“C:/Users/sony/Documents/NetBeansProjects/CodeReview”
这是cmd中显示的内容,因此我已将该文件放入此目录,并开始工作。。。我不知道原因
提示:当您发现此类问题时,请正确查看错误消息,因为它会告诉您脚本失败时正在查看的位置,因此只需将文件放在该位置即可工作
享受\m/