Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/372.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何为jasper报表设置相对类路径_Java_Swing_Netbeans_Jasper Reports - Fatal编程技术网

Java 如何为jasper报表设置相对类路径

Java 如何为jasper报表设置相对类路径,java,swing,netbeans,jasper-reports,Java,Swing,Netbeans,Jasper Reports,我正在从一个swing应用程序创建一个jasper报告。当设置了绝对路径时,它可以正常工作,但没有为相对路径生成报告。生成代码的java代码是 JasperDesign jd= JRXmlLoader.load("relative path"); String sql = ""; JRDesignQuery newQuery= new JRDesignQuery(); newQuery.setText(sql); jd.setQuery(newQuery);

我正在从一个swing应用程序创建一个jasper报告。当设置了绝对路径时,它可以正常工作,但没有为相对路径生成报告。生成代码的java代码是

 JasperDesign jd= JRXmlLoader.load("relative path");

    String sql = "";
    JRDesignQuery newQuery= new JRDesignQuery();
    newQuery.setText(sql);
    jd.setQuery(newQuery);
    JasperReport JASP_REP= JasperCompileManager.compileReport(jd);
    JasperPrint JASP_PRINT= JasperFillManager.fillReport(JASP_REP,null,conn);
    JasperViewer.viewReport(JASP_PRINT,false);
当我尝试使用绝对路径时,会发生错误

<defaultValueExpression >
        <![CDATA["reports/report1.jasper"]]>
    </defaultValueExpression>
我从你那里得到了一些建议


但是在这个场景中没有一个是有用的。

如果您使用的是
Jasper
Swing
应用程序,那么最佳实践是路径必须是绝对的。只需将所有
.jrxml
文件编译为
.jasper
文件,并始终加载编译后的
.jasper
文件。它很快

在应用程序外侧创建文件夹,如
jaspers
images
style
。并创建
系统/环境
变量,如下所示

JASPERDIR = "c:\\app\\jaspers";
STYLES = "c:\\app\\styles";
IMAGES="c:\\app\images";
现在,在swing应用程序中使用
System.getenv()
方法,传递变量名称以读取路径


这样一来,swing应用程序每次都足够灵活。您可以随时更改
图像
样式
.jasper
文件,而无需重新启动swing应用程序。

jrxml文件位于何处。添加示例如下:comment@Firefly.... 谢谢你的回复。。你能提供一些关于System.getenv()方法(可能是一个片段)的详细信息吗。。创建环境变量后,我无法使用方法右键单击MyComputer properties AdvanceTab环境变量访问它们。现在单击新建并将变量名设置为
JASPERDIR
,变量值设置为
“c:\\app\\jaspers”。现在最重要的事情是重启eclipse。编写一个简单的客户机类,并在main方法中编写下面的代码
System.out.println(System.getenv(“JASPERDIR”)谢谢。。。。这有助于理解我的代码的问题!!我相信这会奏效的…竖起大拇指。。!!很高兴听到这个消息。如果你喜欢这个答案,那么接受它并投票。
JASPERDIR = "c:\\app\\jaspers";
STYLES = "c:\\app\\styles";
IMAGES="c:\\app\images";