我对从 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()
,因此永远不会创建目录。我之前多次使用成功,所以我怀疑MATLAB中存在问题mkdirs()
。mkdir()
你知道是什么原因吗?
堆栈跟踪:
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);
导入语句的原因是我的程序构建到 4 个不同的包中。
*更新:* 我刚刚发现,如果我按照 lnunno 的建议创建绝对目录,程序就可以工作。但这仍然不能解决问题。