我使用 JasperSoft Studio 制作了一份 jasper 报告,其中包含一个子报告。当我在工作室预览它时,效果很好。但是当我将它添加到我的 java fx 项目中时,我必须将子报告作为参数发送到主报告,对吗?
当我这样做时,我不断收到错误消息,指出未找到子报表资源。我不认为有任何拼写错误,因为我尝试过几乎所有包含子报告的报告..仍然继续收到该错误..
这些是我尝试过的事情1.使用jaspersoft studio再次编译报告并将它们再次包含在项目中..2.将jrxml文件包含到项目中并使用编译管理器编译它..3.我阅读了一些教程并问题表明将主报告中的子报告元素的表达式设为
$P{SUBREPORT_DIR} + “subreport_2.jasper”
但我仍然不断收到相同的错误,我不知道我做错了什么下面是我的代码
应用程序中用于查看报告的方法
@FXML
public void btnMarkingSchemeClicked(ActionEvent actionEvent) {
try {
// JasperReport compiledReport = (JasperReport) JRLoader.loadObject(ViewAssignmentsController.class.getResourceAsStream("/edu/ijse/gdse41/ams/reports/MarkingScheme.jasper"));
JasperReport compiledReport = JasperCompileManager.compileReport(ViewAssignmentsController.class.getResourceAsStream("/edu/ijse/gdse41/ams/reports/MarkingScheme.jrxml"));
HashMap<String, Object> parameters = new HashMap<>();
parameters.put("assignID", aid);
parameters.put("course", cmbCourse.getSelectionModel().getSelectedItem().toString());
parameters.put("subject", cmbSub.getSelectionModel().getSelectedItem().toString());
parameters.put("semester", cmbSem.getSelectionModel().getSelectedItem().toString());
parameters.put("assign", ctrlAssign.search(aid).getAssignName());
// JasperReport subReport = (JasperReport) JRLoader.loadObject(ViewAssignmentsController.class.getResourceAsStream("/edu/ijse/gdse41/ams/reports/Answers.jasper"));
JasperReport subReport = JasperCompileManager.compileReport(ViewAssignmentsController.class.getResourceAsStream("/edu/ijse/gdse41/ams/reports/Answers.jrxml"));
parameters.put("subReport", subReport);
JasperPrint fillReport = JasperFillManager.fillReport(compiledReport, parameters, ConnectionFactory.getInstance().getConnection());
JasperViewer.viewReport(fillReport, false);
} catch (JRException | SQLException | ClassNotFoundException ex) { …Run Code Online (Sandbox Code Playgroud) 当方法重载完成后,我知道我们只能创建具有相同名称的方法,只要它们的方法签名不同。
class Demo{
public static void myMethod(int y, double x){}
public static void myMethod(double x,int y){}
public static void main(String args[]){
byte b=10;
myMethod(b,b);
}
}
Run Code Online (Sandbox Code Playgroud)
上面显示的代码给出错误,提示错误:对 myMethod 的引用不明确 出现此问题的原因是字节值在自动转换后可以分配给 int 和 double 类型,并且对于要传递的值对哪个方法感到困惑?如果我错了请纠正我..
我尝试了以下程序。我以为这也会出错,但编译时没有错误
class MyClass{
public static void myMethod(int i){
System.out.println("myMethod1(int)");
}
public static void myMethod(double a){
System.out.println("myMethod2(int)");
}
}
class Demo{
public static void main(String args[]){
MyClass.myMethod(100);
}
}
Run Code Online (Sandbox Code Playgroud)
我认为它也会给出与之前相同的错误,但这给出的输出为myMethod(int) ...所以我假设由于它有一个可以传递 int 值的完美匹配方法,所以它不会给出错误。 。
但是如果我对上面的第二个程序进行以下更改,为什么它不会给出错误?
class MyClass{
public static void myMethod(int i){
System.out.println("myMethod1(int)");
}
public …Run Code Online (Sandbox Code Playgroud) 我只是在试验内部类,并且遇到了这个有本地但是静态内部类的想法......我在静态方法中创建了一个内部类......好吧,它就像那样简单..这是我做的例子
class Outer {
static void m() {
class LocalStatic {
void s() {
System.out.println("static local inner class method");
}
}
}
}
class Demo {
public static void main(String args[]) {
Outer.m();
}
}
Run Code Online (Sandbox Code Playgroud)
这不会给出任何编译错误.
我知道如何访问静态方法m.但我想知道是否有办法 从外部类访问本地类LocalStatic ..那么根据我的理解,我们无法访问方法内的某些内容吗?因此,我不能访问任何LocalStatic或任何方法或类之外的本地类的内部属性外只是想确保..
考虑以下代码片段。
int main(){
int x[2];
x[0]=100;
x[1]=200;
printf("%d\n",x);
printf("%d\n",&x);
printf("%d\n",*x);
}
Run Code Online (Sandbox Code Playgroud)
输出为(在三行中)
6487616 6487616 100
Run Code Online (Sandbox Code Playgroud)
我读过数组名称是指向数组第一个元素的指针。因此,'x' 的值打印了一个内存地址。但是,如果我尝试打印保存数组第一个元素地址的指针的地址,为什么还会打印相同的内存地址?它不应该打印另一个内存地址,仅仅是因为为了让变量存储内存地址,它应该是一个指针,并且该指针变量在 RAM 中也有一个内存地址。
int main(){
int y = 10;
int *p = &y;
printf("%d\n",&y);
printf("%d\n",&p);
}
Run Code Online (Sandbox Code Playgroud)
上面的代码给出的输出为
6487628 6487616
Run Code Online (Sandbox Code Playgroud)
那么为什么这对数组不起作用呢?