有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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手动运行批处理文件时,一切正常


共 (2) 个答案

  1. # 1 楼答案

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

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

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

  2. # 2 楼答案

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

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

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

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

    享受\m/