用java解析x文件

用java解析x文件,java,parsing,ofx,Java,Parsing,Ofx,我目前正在尝试用java读取ofx文件。 但是我得到了以下错误:未处理的异常类型FileNotFoundException(对于第二行)。我正在使用OFx4j。你能给我一些关于这个的建议吗 以下是我迄今为止编写的代码: String filename=new String("C:\\file.ofx"); FileInputStream file = new FileInputStream(filename); NanoXMLOFXReader nano = new NanoXM

我目前正在尝试用java读取ofx文件。 但是我得到了以下错误:
未处理的异常类型FileNotFoundException
(对于第二行)。我正在使用OFx4j。你能给我一些关于这个的建议吗

以下是我迄今为止编写的代码:

String filename=new String("C:\\file.ofx");
    FileInputStream file = new FileInputStream(filename);
    NanoXMLOFXReader nano = new NanoXMLOFXReader();

    try
    {
        nano.parse(stream);
        System.out.println("woooo It workssss!!!!");
    }
    catch (OFXParseException e)
    {
    }
感谢您的评论,我做了一些更改:

String FILE_TO_READ = "C:\\file.ofx";


    try
    {
        FileInputStream file = new FileInputStream(FILE_TO_READ);
        NanoXMLOFXReader nano = new NanoXMLOFXReader();


        nano.parse(file);
        System.out.println("woooo It workssss!!!!");
    }
    catch (OFXParseException e)
    {
        System.out.println("Message : "+e.getMessage());
    }
    catch (Exception e1)
    {
        System.out.println("Other Message : "+e1.getMessage());
    }
但现在我明白了:

线程“main”java.lang.NoClassDefFoundError中出现异常:net/n3/nanoxml/XMLParseException 在OfxTest.afficherFichier(OfxTest.java:31) 位于OfxTest.main(OfxTest.java:20) 原因:java.lang.ClassNotFoundException:net.n3.nanoxml.XMLParseException 位于java.net.URLClassLoader$1.run(未知源) 位于java.security.AccessController.doPrivileged(本机方法) 位于java.net.URLClassLoader.findClass(未知源) 位于java.lang.ClassLoader.loadClass(未知源) 位于sun.misc.Launcher$AppClassLoader.loadClass(未知源) 位于java.lang.ClassLoader.loadClass(未知源) ... 还有两个


我在想办法。我相信它找不到XMLParseException。但我不确定。

这意味着您没有捕获
FileNotFoundException
。另外,尽管这与错误消息无关,但作为最佳实践,您应该始终在finally块中关闭文件流,如下面所述。也不需要对文件名上的new String()执行任何操作

FileNotFoundException
添加此catch块:-

    String filename = "C:\\file.ofx";
    FileInputStream file = null;
    NanoXMLOFXReader nano = null;
    try
    {
         file = new FileInputStream(filename);
         nano = new NanoXMLOFXReader();
        nano.parse(stream);
        System.out.println("woooo It workssss!!!!");
    }
    catch (OFXParseException e)
    {
        e.printStackTrace();
        throw e;
    }catch (FileNotFoundException e){
        e.printStackTrace();
        throw e;
    }finally{
        if(file!=null){
           file.close();
        }
    }

这意味着您没有捕获
FileNotFoundException
。另外,尽管这与错误消息无关,但作为最佳实践,您应该始终在finally块中关闭文件流,如下面所述。也不需要对文件名上的new String()执行任何操作

FileNotFoundException
添加此catch块:-

    String filename = "C:\\file.ofx";
    FileInputStream file = null;
    NanoXMLOFXReader nano = null;
    try
    {
         file = new FileInputStream(filename);
         nano = new NanoXMLOFXReader();
        nano.parse(stream);
        System.out.println("woooo It workssss!!!!");
    }
    catch (OFXParseException e)
    {
        e.printStackTrace();
        throw e;
    }catch (FileNotFoundException e){
        e.printStackTrace();
        throw e;
    }finally{
        if(file!=null){
           file.close();
        }
    }

您遇到的第二个问题:“线程中的异常”main“java.lang.NoClassDefFoundError:net/n3/nanoxml/XMLParseException”意味着您没有从这里包括nanoxml库:


您还需要Apache Commons日志库,因为NanoXML似乎依赖于此。此处提供:

您遇到的第二个问题:“线程中的异常”main“java.lang.NoClassDefFoundError:net/n3/nanoxml/XMLParseException”表示您没有从此处包含nanoxml库:


您还需要Apache Commons日志库,因为NanoXML似乎依赖于此。此处可用:

您正在打开一个流,但没有检查异常。不要写入
新字符串(“C:\\file.ofx”)
,只需写入
String filename=“C:\\file.ofx”
没有理由从文本字符串显式创建一个新的
String
对象。大家都注意到@Jesper,在读取他/她的异常后,我直接跳到输入流code:)。您正在打开一个流,但没有检查异常。不要编写
新字符串(“C:\\file.ofx”)
,只需编写
字符串文件名=“C:\\file.ofx”
没有理由从文本字符串显式创建一个新的
String
对象。大家注意到@Jesper,在读取他/她的异常后,我直接跳转到输入流代码:)。可以在try{}catch{}块之外打开一个流吗?因为此时会发生FileNotFoundException”FileInputStream文件=新的FileInputStream(文件名);“被调用了,是吗?@krio-对不起,我当时很匆忙,写得太快了……我现在修复了代码片段。现在试试。这是一个简单的问题,他只是没有发现异常:)让Bon_chan试试吧!我也回答了!无论如何,在阅读了您的代码后感到困惑,不想投反对票,因为我觉得这是一个诚实的错误;)cheers@krio-是的,谢谢你注意到它。我还在finnaly块中添加了文件close for OP,因为我注意到他的代码中没有close语句。检查问题的注释部分,Jesper lol注意到了!在try{}catch{}块外打开流可以吗?因为FileNotFoundException将在“FileInputStream文件=新的FileInputStream(文件名);“被调用了,是吗?@krio-对不起,我当时很匆忙,写得太快了……我现在修复了代码片段。现在试试。这是一个简单的问题,他只是没有发现异常:)让Bon_chan试试吧!我也回答了!无论如何,在阅读了您的代码后感到困惑,不想投反对票,因为我觉得这是一个诚实的错误;)cheers@krio-是的,谢谢你注意到它。我还在finnaly块中添加了文件close for OP,因为我注意到他的代码中没有close语句。检查问题的注释部分,Jesper lol注意到了!