输出文件在Eclipse中生成但不在jar文件中生成

时间:2012-08-03 16:06:50

标签: java eclipse

我有一个简单的解析程序,它接受一些文件并将它们组合在一起。然后它会生成一些输出文件到工作目录。当我在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"); 
      } 

1 个答案:

答案 0 :(得分:0)

由于某种原因,jar文件不包括我必须从javax.mail添加的一些旧库,所以我尝试使用netbeans制作一个jar文件而且它有效。 Netbeans没有将javax.mail库打包到jar文件中,但是将它们包含在带有jar文件的文件中。因此,要使用jar文件,此文件也必须位于目录中。

相关问题