我有一个简单的解析程序,它接受一些文件并将它们组合在一起。然后它会生成一些输出文件到工作目录。当我在eclipse中运行该程序时,它会生成所有必需的输出文件。但是,当我使用在eclipse中生成的jar运行它时,它只创建三个输出文件中的两个。它让我觉得jar文件的生成方式有问题,但似乎找不到任何答案。
我已经尝试更新一些java,它是用java 5编写的,我相信。我刚刚将Vectors更改为ArrayLists,将FileOutputStream更改为FileWriter。
我必须下载javax.mail来获取所需的库,并将这些jar文件添加到我在Eclipse中使用的java6库中。我已经尝试删除类并生成新类。我试图检查jar文件的权限,以确保我有权访问它。我想我只是不确定从哪里开始。
我也尝试将其打包为jar文件而不是可运行的jar文件,因为它为我提供了更多选项。但是,我无法运行这种类型的jar文件,即使它是可执行文件。我已经多次重新创建了jar文件而没有任何运气。
人们对UTF-8在jar文件中没有正确显示但在日食中表现不错的问题很多。但是他们的jar文件正在生成文本文件,而我的文件文件并没有生成文件文件。
更新:有趣的是,如果我将代码块移动到它自己的类并将其作为一个单独的jar运行它将起作用。所以现在的解决方案是拥有两个jar文件。
这是未生成文件的代码:
private static void parseCRNOnly() {
try {
//file to write to
File new_file = new File("CRNOnlyClean.txt");
FileWriter out = new FileWriter(new_file);
//file to read from
File file = new File("CRNOnly.txt");
FileReader reader = new FileReader(file);
BufferedReader buf = new BufferedReader(reader);
try{
String str;
String temp = "\r";
String nl = "\r\n";
String tab = "\t";
str = buf.readLine();
while (str != null && !str.isEmpty()) {
StringTokenizer tokenizer = new StringTokenizer(str," \t");
int column = 0;
while(tokenizer.hasMoreTokens()) {
column++;
temp = tokenizer.nextToken();
if(column == 8){
break;
}
out.write(temp);
out.write(tab);
}
out.write(nl);
str = buf.readLine();
}
out.close();
} catch(IOException e0){
System.out.println("Error Reading From CRNOnly.txt");
JOptionPane.showMessageDialog(null, "Error Reading From CRNOnly.txt");
}
} catch(FileNotFoundException e1){
System.out.println("File CRNOnly.txt Not Found");
JOptionPane.showMessageDialog(null, "File CRNOnly.txt Not Found");
} catch (IOException e) {
System.out.println("Error Reading from FileWriter");
JOptionPane.showMessageDialog(null, "Error Reading from FileWriter");
}
答案 0 :(得分:0)
由于某种原因,jar文件不包括我必须从javax.mail添加的一些旧库,所以我尝试使用netbeans制作一个jar文件而且它有效。 Netbeans没有将javax.mail库打包到jar文件中,但是将它们包含在带有jar文件的文件中。因此,要使用jar文件,此文件也必须位于目录中。