2013-10-18 16 views
7

Tôi đang phát triển một số báo cáo với Jaspersoft Studio.
Tôi có một ứng dụng web nên chấp nhận các truy vấn REST và chuyển chúng thành các báo cáo được biên dịch.
Vì vậy, tôi có một số JasperReports lọ bao gồm:JasperReports: Hàm CONCATENATE không tìm thấy

  • groovy-all-2.0.1.jar
  • iText-2.1.7.js2.jar
  • JasperReports-5.2.0. jar

Vấn đề là khi tôi biên dịch báo cáo của mình và chạy từ Jaspersoft Studio, nó hoạt động tốt.
Nhưng khi tôi biên dịch và chạy nó từ ứng dụng web của tôi, nó ném ngoại lệ:

net.sf.jasperreports.engine.fill.JRExpressionEvalException: Error evaluating expression : 
    Source text : CONCATENATE($V{startString}, " - ", $V{endString}) 
    at net.sf.jasperreports.engine.fill.JREvaluator.evaluate(JREvaluator.java:244) 
    at net.sf.jasperreports.engine.fill.JRCalculator.evaluate(JRCalculator.java:591) 
    at net.sf.jasperreports.engine.fill.JRCalculator.evaluate(JRCalculator.java:559) 
... 
Caused by: net.sf.jasperreports.engine.JRRuntimeException: Function CONCATENATE not found 

Khi tôi thay đổi CONCATENATE cuộc gọi của tôi trong báo cáo nó hoạt động tốt.

Vì vậy, điều này để lại cho tôi một giải pháp mà tôi thiếu một trong các lọ JasperReports, nhưng cái nào?

+0

Nó là một trong những chức năng Text (groovy) – csabee

Trả lời

9

Bạn cũng nên thêm jasperreports-functions-5.2.0.jar vào đường dẫn lớp của mình.

Thư viện này chứa net.sf.jasperreports.functions.standard.TextFunctions lớp với CONCATENATE chức năng.

Bạn có thể tìm thấy đồ tạo tác này tại http://jaspersoft.artifactoryonline.com/jaspersoft/jr-ce-releasesKho lưu trữ Maven.

Đoạn từ tôi kiểm tra pom.xml:

<repositories> 
    <repository> 
     <id>jr-ce-releases</id> 
     <url>http://jaspersoft.artifactoryonline.com/jaspersoft/jr-ce-releases</url> 
    </repository> 
</repositories> 

<dependencies> 
    <dependency> 
     <groupId>net.sf.jasperreports</groupId> 
     <artifactId>jasperreports</artifactId> 
     <version>5.2.0</version> 
    </dependency> 

    <dependency> 
     <groupId>org.codehaus.groovy</groupId> 
     <artifactId>groovy-all</artifactId> 
     <version>2.0.1</version> 
    </dependency> 
    <dependency> 
     <groupId>net.sf.jasperreports</groupId> 
     <artifactId>jasperreports-functions</artifactId> 
     <version>5.2.0</version> 
    </dependency> 
    <dependency> 
     <groupId>joda-time</groupId> 
     <artifactId>joda-time</artifactId> 
     <version>2.1</version> 
    </dependency> 
</dependencies> 

Các net.sf.jasperreports.jasperreports chức năng: 5.2.0 vật phụ thuộc vào Joda-time.joda thời gian: 2.1 vật - bạn cũng nên thêm vào classpath các Joda thời gian 2.1.jar


Ghi chú:

Bạn có thể tìm thêm thông tin trong Custom Functions in Report Expressions bài viết

+1

Từ kinh nghiệm gần đây khác: Câu hỏi này cũng rất phù hợp với chức năng cập nhật theo thời gian như tốt. Có lẽ ai đó cũng nên cố gắng liên kết các câu hỏi quan hệ chức năng ngày giờ với bài đăng này. Cố gắng sử dụng TODAY() hoặc NOW() trong JasperStudio sẽ mang lại kết quả tương tự mà không cần thêm các thư viện này vào classpath. –

+0

Tôi đã có cùng một vấn đề với hàm 'MONTH()', giải pháp này làm việc cho tôi chỉ cần thêm 'jasperreports-functions' và thay đổi' groovy' thành 'groovy-all'. Tôi không biết nếu điều này cuối cùng là cần thiết, nhưng ứng dụng của tôi đang chạy trơn tru. Cảm ơn bạn rất nhiều @AlexK –

+0

Bạn được chào đón :) –