在制作fileinputstream时找不到文件异常?

时间:2015-02-19 08:03:05

标签: java jasper-reports inputstream filenotfoundexception fileinputstream

我尝试为Jasper创建一个fileInputStram,我得FileNotFoundException。 我的jasper文件和java类在同一个包下。 我使用java 1.8和jasperreport 5.5.0

有人知道此代码中有什么问题吗?

java.io.FileNotFoundException: de\reports\off\office.jasper (The system cannot find the path specified)
    at java.io.FileInputStream.open(Native Method)
    at java.io.FileInputStream.<init>(FileInputStream.java:138)
    at de.reports.off.PrintOffice.retrieveStream(PrintOffice.java:105)

这是我的方法:

public static FileInputStream retrieveStream() {
        final String OFFICE_JASPER = "de\\reports\\off\\office.jasper";
        File jasperFile = new File( OFFICE_JASPER );
        FileInputStream fis = null;
        try {
            fis = new FileInputStream( jasperFile);
        }
        catch ( FileNotFoundException e ) {
            e.printStackTrace();
        }

        return fis;
    }

2 个答案:

答案 0 :(得分:1)

如果使用相对路径创建File对象,它将相对于user.home中指定的目录(通常是启动应用程序的目录)。

例如:
- 您的应用程序从目录C:\dir1\app开始 - File将引用文件C:\dir1\app\de\reports\off\office.jasper

答案 1 :(得分:0)

我的IDE在编译时没有复制文件。 这只是pom文件中的小调整,其中定义了.jasper。 我将/src添加到<directory>${basedir}/src</directory>

<resource>
                <directory>${basedir}/src</directory>
                <filtering>false</filtering>
                <includes>
                    <include>**/*.jasper</include>
                </includes>
                <excludes>
                    <exclude>target</exclude>
                    <exclude>**/target</exclude>
                    <exclude>**/target/**</exclude>
                </excludes>
            </resource>