首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SP2-0310:无法打开文件.sql

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

Stack Overflow用户
提问于 2013-12-04 20:20:20
回答 2查看 14.5K关注 0票数 0

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

代码语言:javascript
复制
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代码是:

代码语言:javascript
复制
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");

它给出了错误:

代码语言:javascript
复制
SP2-0310: unable to open file

使用批处理(DIR_REPORT)生成的第一个文件正在执行,但我的PACKAGE_SCRIPTv2.sql未执行,但出现错误,请帮助我做些什么。

尽管当从cmd手动运行批处理文件时,一切工作正常...

EN

回答 2

Stack Overflow用户

发布于 2013-12-04 22:07:12

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

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

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

票数 0
EN

Stack Overflow用户

发布于 2013-12-05 19:58:58

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

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

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

提示:当你发现这样的问题时,请正确地查看错误消息,因为它会告诉你脚本在失败时正在查找的位置,所以只需将文件放在该位置就可以工作了……

享受\m/

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20375222

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档