使用Struts2配置Jasper时找不到jrxml

时间:2015-05-01 15:37:12

标签: java struts2 jasper-reports

我正在尝试通过遵循教程来配置带有Struts2的Jasper。但是当我运行我的应用程序时出现以下错误。

net.sf.jasperreports.engine.JRException:java.io.FileNotFoundException:Struts2Example / jasper / our_jasper_template.jrxml(没有这样的文件或目录)

我已经在网上搜了好几个小时,但我无法找到解决问题的方法。任何人都可以帮我解决这个问题。我的代码如下。

<struts>
    <package name="default" namespace="/" extends="jasperreports-default">
        <action name="myJasperTest"     class="com.dilan.user.action.JasperAction">
            <result name="success" type="jasper">
                <param name="location">/jasper/our_compiled_template.jasper</param>
                <param name="dataSource">myList</param>
                <param name="format">PDF</param>
            </result>
        </action>
    </package>
</struts>

我的动作类

  package com.dilan.user.action;
  import com.opensymphony.xwork2.ActionSupport;
  import net.sf.jasperreports.engine.JasperCompileManager;

  import java.util.ArrayList;
  import java.util.List;

public class JasperAction extends ActionSupport {

private List<Person> myList;

public String execute() throws Exception {

    // Create some imaginary persons.
    Person p1 = new Person(new Long(1), "Patrick", "Lightbuddie");
    Person p2 = new Person(new Long(2), "Jason", "Carrora");
    Person p3 = new Person(new Long(3), "Alexandru", "Papesco");
    Person p4 = new Person(new Long(4), "Jay", "Boss");

    // Store people in our dataSource list (normally they would come from a database).
    myList = new ArrayList<Person>();
    myList.add(p1);
    myList.add(p2);
    myList.add(p3);
    myList.add(p4);

    try {
        JasperCompileManager.compileReportToFile(
                "Struts2Example/jasper/our_jasper_template.jrxml",
                "Struts2Example/jasper/our_compiled_template.jasper");
    } catch (Exception e) {
        e.printStackTrace();
        return ERROR;
    }
    return SUCCESS;
}

public List<Person> getMyList() {
    return myList;
}

}

我的jrxml

   <!DOCTYPE jasperReport PUBLIC "-//JasperReports//DTD Report   Design//EN" "http://jasperreports.sourceforge.net/dtds/jasperreport.dtd">
<jasperReport name="jasper_test">
    <!-- Our fields from the Person class. -->
    <field name="name" class="java.lang.String"/>
    <field name="lastName" class="java.lang.String"/>
    <title>
        <band height="50">
            <staticText>
                <reportElement x="0" y="0" width="180" height="15"/>
                <textElement/>
                <text><![CDATA[Struts 2 JasperReports Sample]]></text>
            </staticText>
        </band>
    </title>
    <pageHeader>
        <band/>
    </pageHeader>
    <columnHeader>
        <band height="20">
            <staticText>
                <reportElement x="180" y="0" width="180" height="20"/>
                <textElement>
                    <font isUnderline="true"/>
                </textElement>
                <text><![CDATA[NAME]]></text>
            </staticText>
             <staticText>
                <reportElement x="360" y="0" width="180" height="20"/>
                <textElement>
                    <font isUnderline="true"/>
                </textElement>
                <text><![CDATA[LASTNAME]]></text>
            </staticText>
        </band>
    </columnHeader>
    <detail>
        <band height="20">
            <textField>
                <reportElement x="180" y="0" width="180" height="15"/>
                <textElement/>
                <textFieldExpression><![CDATA[$F{name}]]>    </textFieldExpression>
            </textField>
            <textField>
                <reportElement x="360" y="0" width="180" height="15"/>
                <textElement/>
                <textFieldExpression><![CDATA[$F{lastName}]]>  </textFieldExpression>
            </textField>
        </band>
    </detail>
    <columnFooter>
        <band/>
    </columnFooter>
    <pageFooter>
        <band height="15">
            <staticText>
                <reportElement x="0" y="0" width="40" height="15"/>
                <textElement/>
                <text><![CDATA[Page:]]></text>
            </staticText>
                <textField>
                <reportElement x="40" y="0" width="100" height="15"/>
                <textElement/>
                <textFieldExpression class="java.lang.Integer"><!    [CDATA[$V{PAGE_NUMBER}]]></textFieldExpression>
            </textField>
        </band>
     </pageFooter>
    <summary>
        <band/>
</summary>

     <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.dilan.common</groupId>
    <artifactId>Struts2Example</artifactId>
    <packaging>war</packaging>
    <version>com.dilan.common</version>
    <name>Struts2Example Maven Webapp</name>
    <url>http://maven.apache.org</url>
<dependencies>
    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>3.8.1</version>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>org.apache.struts</groupId>
        <artifactId>struts2-core</artifactId>
        <version>2.3.1.2</version>
    </dependency>
    <dependency>
        <groupId>org.apache.struts</groupId>
        <artifactId>struts2-jasperreports-plugin</artifactId>
        <version>2.3.16.1</version>
    </dependency>

        <!--Jasper related dependencies-->
        <dependency>
        <groupId>com.lowagie</groupId>
        <artifactId>itext</artifactId>
        <version>1.3.1</version>
        </dependency>

        <dependency>
        <groupId>net.sf.jasperreports</groupId>
       <artifactId>jasperreports</artifactId>
        <version>4.1.2</version>
        </dependency>

        <dependency>
        <groupId>tomcat</groupId>
        <artifactId>jasper-compiler-jdt</artifactId>
        <version>5.5.23</version>
        </dependency>

        <dependency>
        <groupId>org.apache.struts</groupId>
        <artifactId>struts2-jasperreports-plugin</artifactId>
        <version>2.3.20</version>
        </dependency>

    </dependencies>
    <build>
        <finalName>Struts2Example</finalName>
        <plugins>
            <plugin>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>2.3.2</version>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                </configuration>
            </plugin>
        </plugins>
    </build>
</project>

的web.xml

<!DOCTYPE web-app PUBLIC
    "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
    "http://java.sun.com/dtd/web-app_2_3.dtd" >

<web-app>
    <display-name>Struts 2 Web Application</display-name>

    <filter>
        <filter-name>struts2</filter-name>
        <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
    </filter>

    <filter-mapping>
        <filter-name>struts2</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

我已按照本教程创建我的应用程序。 http://struts.apache.org/docs/jasperreports-tutorial.html

下面我附上了我的项目结构图片。有人可以帮我解决这个问题......! Project structure

0 个答案:

没有答案