即使文件存在于 Java 中也没有这样的文件或目录错误
No such file or directory error even the file exists in Java
我是 Java 的新手,我希望 运行 图书馆 JGibbLDA
。我按照文档要求,进入JGibbLDA-v.1.0
根目录,输入命令:
java -mx512M -cp bin:lib/args4j-2.0.6.jar jgibblda.LDA -est -alpha 0.5 -beta 0.1 -ntopics 100 -niters 1000 -savestep 100 -twords 20 -dfile models/data/data.txt
但是出现错误:
Read Dataset Error: /models/data/data.txt (No such file or directory)
java.io.FileNotFoundException: /models/data/data.txt (No such file or directory)
at java.io.FileInputStream.open0(Native Method)
at java.io.FileInputStream.open(FileInputStream.java:195)
at java.io.FileInputStream.<init>(FileInputStream.java:138)
at java.io.FileInputStream.<init>(FileInputStream.java:93)
at jgibblda.LDADataset.readDataSet(LDADataset.java:154)
at jgibblda.Model.initNewModel(Model.java:476)
at jgibblda.Estimator.init(Estimator.java:45)
at jgibblda.LDA.main(LDA.java:49)
Fail to read training data!
我不知道为什么错误日志消息中的目录前面有一个/
。但是models/data/data.txt
确实存在,我可以在根目录下正常输入models/data
。库的相关代码如下:
public static LDADataset readDataSet(BufferedReader reader, Dictionary dict){
try {
//read number of document
String line;
line = reader.readLine();
int M = Integer.parseInt(line);
System.out.println("NewM:" + M);
LDADataset data = new LDADataset(M, dict);
for (int i = 0; i < M; ++i){
line = reader.readLine();
data.setDoc(line, i);
}
return data;
}
catch (Exception e){
System.out.println("Read Dataset Error: " + e.getMessage());
e.printStackTrace();
return null;
}
}
我也试过 ../../models/data/data.txt
但也失败了。你知道如何解决这个问题吗?提前致谢!
程序正在寻找绝对路径,而您传递的是相对路径。
错误说:
/models/data/data.txt (No such file or directory)
^
|--- This is the root of your filesystem
那么你必须传递完整路径,尝试使用完整路径(例如/home/youruser/project/models/data/data.txt):
java -mx512M -cp bin:lib/args4j-2.0.6.jar jgibblda.LDA -est -alpha 0.5 -beta 0.1 -ntopics 100 -niters 1000 -savestep 100 -twords 20 -dfile FULL_PATH
在方法 Model.initNewModel(LDACmdOption option)
中,数据集的文件名构造为
dir + File.separator + dfile
如果dir
为空,文件名将从根目录开始。为避免此行为,您可以使用选项 -dir
指定数据目录。
运行 等于
java -mx512M -cp bin:lib/args4j-2.0.6.jar jgibblda.LDA -est -alpha 0.5 \
-beta 0.1 -ntopics 100 -niters 1000 -savestep 100 -twords 20 \
-dir /home/youruser/project/models/data/ \
-dfile data.txt
将从目录 /home/youruser/project/models/data/
中读取文件 data.txt
。所有生成的文件也将存储在 /home/youruser/project/models/data/
.
中
我是 Java 的新手,我希望 运行 图书馆 JGibbLDA
。我按照文档要求,进入JGibbLDA-v.1.0
根目录,输入命令:
java -mx512M -cp bin:lib/args4j-2.0.6.jar jgibblda.LDA -est -alpha 0.5 -beta 0.1 -ntopics 100 -niters 1000 -savestep 100 -twords 20 -dfile models/data/data.txt
但是出现错误:
Read Dataset Error: /models/data/data.txt (No such file or directory)
java.io.FileNotFoundException: /models/data/data.txt (No such file or directory)
at java.io.FileInputStream.open0(Native Method)
at java.io.FileInputStream.open(FileInputStream.java:195)
at java.io.FileInputStream.<init>(FileInputStream.java:138)
at java.io.FileInputStream.<init>(FileInputStream.java:93)
at jgibblda.LDADataset.readDataSet(LDADataset.java:154)
at jgibblda.Model.initNewModel(Model.java:476)
at jgibblda.Estimator.init(Estimator.java:45)
at jgibblda.LDA.main(LDA.java:49)
Fail to read training data!
我不知道为什么错误日志消息中的目录前面有一个/
。但是models/data/data.txt
确实存在,我可以在根目录下正常输入models/data
。库的相关代码如下:
public static LDADataset readDataSet(BufferedReader reader, Dictionary dict){
try {
//read number of document
String line;
line = reader.readLine();
int M = Integer.parseInt(line);
System.out.println("NewM:" + M);
LDADataset data = new LDADataset(M, dict);
for (int i = 0; i < M; ++i){
line = reader.readLine();
data.setDoc(line, i);
}
return data;
}
catch (Exception e){
System.out.println("Read Dataset Error: " + e.getMessage());
e.printStackTrace();
return null;
}
}
我也试过 ../../models/data/data.txt
但也失败了。你知道如何解决这个问题吗?提前致谢!
程序正在寻找绝对路径,而您传递的是相对路径。
错误说:
/models/data/data.txt (No such file or directory)
^
|--- This is the root of your filesystem
那么你必须传递完整路径,尝试使用完整路径(例如/home/youruser/project/models/data/data.txt):
java -mx512M -cp bin:lib/args4j-2.0.6.jar jgibblda.LDA -est -alpha 0.5 -beta 0.1 -ntopics 100 -niters 1000 -savestep 100 -twords 20 -dfile FULL_PATH
在方法 Model.initNewModel(LDACmdOption option)
中,数据集的文件名构造为
dir + File.separator + dfile
如果dir
为空,文件名将从根目录开始。为避免此行为,您可以使用选项 -dir
指定数据目录。
运行 等于
java -mx512M -cp bin:lib/args4j-2.0.6.jar jgibblda.LDA -est -alpha 0.5 \
-beta 0.1 -ntopics 100 -niters 1000 -savestep 100 -twords 20 \
-dir /home/youruser/project/models/data/ \
-dfile data.txt
将从目录 /home/youruser/project/models/data/
中读取文件 data.txt
。所有生成的文件也将存储在 /home/youruser/project/models/data/
.