【发布时间】:2014-01-24 03:24:27
【问题描述】:
我对从 MATLAB 执行的 JAVA 应用程序不走运。简而言之,我有以下代码:
try {
dir = new File("Patients/Patient" + patientNumber + "/Meals");
dir.mkdirs();
.... more code goes here
} catch (Exception e) {
System.out.println("Some Error");
出于某种原因,我不知道为什么,这段代码在从 JAVA 主方法执行时运行良好。 但是,在 MATLAB 中,这段代码不起作用。它在 dir.mkdirs() 处终止,因此永远不会创建目录。我之前多次成功使用mkdirs() 和mkdir(),所以,我怀疑问题存在于MATLAB。你知道是什么原因吗?
堆栈跟踪:
e.printStackTrace();
返回以下内容:
java.io.FileNotFoundException: Patients\Patient1\Meals\meal0.csv (The system cannot find the path specified.)
at java.io.FileOutputStream.open(Native Method)
at java.io.FileOutputStream.<init>(Unknown Source)
at java.io.FileOutputStream.<init>(Unknown Source)
at java.io.FileWriter.<init>(Unknown Source)
at inputOutput.PrintPatientCsv.printMealCsv(PrintPatientCsv.java:57)
at inputOutput.CreatePopulation.createpopulation(CreatePopulation.java:54)
at functionality.FactoryModel.loadData(FactoryModel.java:100)
最后三行是未创建目录的产物。但是,我不确定上面代码中前 4 行的含义。
计划详情
我的 Java 程序是在 .jar 文件中创建的。此.jar 文件位于:
C:\Users\myName\program\binJava
我的 matlab(我在其中执行 .jar 文件)文件位于:
C:\Users\myName\program\matlab
在我的 MATLAB 中,我输入以下内容:
clear all
javaaddpath('..\binJava\myFile.jar')
import functionality.*;
import domain.*;
import test.*;
import inputOutput.*;
function.MyFunction(1,2,3);
import 语句的原因是我的程序被构建到 4 个不同的包中。
*更新:* 我刚刚发现如果我按照 lnunno 的建议创建绝对目录,该程序就可以工作。但这仍然不能解决问题。
【问题讨论】:
-
它正在抛出异常,不是吗?它的堆栈跟踪是什么(使用
e.printStackTrace()而不是System.out.println("Some Error"))? -
@watery,是的,它正在引发异常。让我回复你。
-
什么异常?我的水晶球说 matlab 以不同的用户身份运行并且没有正确的权限。
-
@jtahlborn 我怎么知道它抛出了哪个异常?我刚刚(为简单起见)创建了带有异常的 try/catch。
-
查看我的编辑评论。打印当前目录可能是值得的,只是为了确保在您期望的位置创建文件夹。
标签: java matlab input mkdir mkdirs