2011-07-21 73 views
14

Tôi đang cố gắng sử dụng tính năng chuyển đổi Java 7 mới trên tính năng chuỗi.Cách thay đổi trình biên dịch tomcat

Nhưng Tomcat không hợp tác.

Tôi đã chắc chắn rằng tomcat đang chạy dưới java 7 nhưng có vẻ như nó không biên dịch theo nó.

Tôi đã thêm dòng sau vào tập tin web.xml, dưới mục jsp servlet

<init-param> 
     <param-name>compiler</param-name> 
     <param-value>C:/Program Files/Java/jdk1.7.0/bin/javac.exe</param-value> 
    </init-param> 

nhưng nó dường như không làm các trick.

Mọi mẹo sẽ được đánh giá cao.

Trả lời

11

Chúng tôi đang chạy Tomcat 6 và có cùng sự cố. Giải pháp của chúng tôi là:

  • thay thế tomcat/lib/ecj-3.3.1.jar bằng ecj-3.7.2.jar (có thể được lấy từ bản phát hành Tomcat 7 mới nhất);
  • thêm video này vào tomcat/conf/web.xml

    ... 
    <servlet> 
        <servlet-name>jsp</servlet-name> 
        <servlet-class>org.apache.jasper.servlet.JspServlet</servlet-class> 
        <init-param> 
         <param-name>fork</param-name> 
         <param-value>false</param-value> 
        </init-param> 
        <init-param> 
         <param-name>xpoweredBy</param-name> 
         <param-value>false</param-value> 
        </init-param> 
        <init-param>         <!-- this should be added --> 
         <param-name>compilerSourceVM</param-name> 
         <param-value>1.7</param-value> 
        </init-param> 
        <init-param> 
         <param-name>compilerTargetVM</param-name> 
         <param-value>1.7</param-value> 
        </init-param>         <!-- last added line --> 
        <load-on-startup>3</load-on-startup> 
    </servlet> 
    

Cách khác đơn giản hơn là, tất nhiên, để cài đặt Tomcat 7 nhưng điều này có thể không phải một lựa chọn cho tất cả mọi người.

+0

Tuyệt vời. Cuối cùng, chúng tôi đã có thể nâng cấp lên Tomcat 7, nhưng chắc chắn có vẻ như giải pháp của bạn đã thực hiện được thủ thuật. –

+0

Ngoài ra, bạn có thể thêm nó vào 'web.inf' của ứng dụng thay thế. –

-1

Bạn đã thử đặt compilerSourceVM thành 1,7 hoặc 7 chưa? (Tôi e rằng mình không thể yêu cầu được biết liệu điều này có hoạt động hay không)

+0

Joel, nhờ trả lời, nhưng nó đã không làm việc :( tôi đặt cả compilerSourceVM và compilerTargetVM, thử với 1,7 và 7 và nhận được kết quả tương tự –

0

Bạn đang trộn thứ gì đó ở đây. Bạn muốn các JSP của bạn biên dịch với Java 7 và không có chạy tomcat với Java 7. Tomcat sử dụng trình biên dịch Java Eclipse mà chưa có hỗ trợ Java 7.

Chỉnh sửa: Tôi đã thực hiện một số thao tác đào. Như bạn có thể thấy here, trình biên dịch Eclipse tích hợp được sử dụng. Trình biên dịch được phân phối với Tomcat 7.0.19 là ECJ 3.7 sẽ hỗ trợ Java 7 không trước 3.7.1.

+0

Michael-O. Tôi đang cố gắng để có được * tất cả mọi thứ * để chạy/biên dịch trên Java 7. Tôi đã có Tomcat chạy trên 7, tôi chỉ thiếu khả năng biên dịch. Đó là lý do tại sao tôi đang tìm một cách để di chuyển ra khỏi trình biên dịch mặc định. –

+0

Bạn nên liên hệ với danh sách gửi thư của người dùng tomcat. Mark Thomas thực sự hoạt động trên cái đó. –

0

Theo phiên bản Tomcat được sử dụng, công cụ JSP do tomcat cung cấp sử dụng phiên bản Java mặc định cụ thể để biên dịch và chạy JSP.

Tomcat 7 sử dụng phiên bản 1,6

compilerSourceVM - Điều gì JDK phiên bản là nguồn tập tin tương thích với ? (Giá trị mặc định: 1.6)

compilerTargetVM - Phiên bản JDK nào là các tệp được tạo tương thích với? (Mặc định giá trị: 1,6)

Tomcat 8 sử dụng phiên bản 1,7

compilerSourceVM - Điều gì JDK phiên bản là nguồn tập tin tương thích với ? (Giá trị mặc định: 1.7)

compilerTargetVM - Phiên bản JDK nào là các tệp được tạo tương thích với? (Giá trị mặc định: 1.7)

Tomcat 9 sử dụng phiên bản 1,8

compilerSourceVM - Điều gì JDK phiên bản là nguồn tập tin tương thích với ? (Giá trị mặc định: 1.8)

compilerTargetVM - Phiên bản JDK nào là các tệp được tạo tương thích với? (Giá trị mặc định: 1.8)

Tất nhiên, bạn có thể thay đổi các phiên bản được sử dụng nếu giá trị mặc định không khớp với yêu cầu của bạn.

Bạn có thể làm điều đó bằng cách thay đổi các thông số init của servlet org.apache.jasper.servlet.JspServlet tuyên bố trong toàn cầu $CATALINA_BASE/conf/web.xml của bạn.

Ví dụ web.xml của phân phối tomcat 8 xác định JspServlet theo cách này:

<servlet> 
    <servlet-name>jsp</servlet-name> 
    <servlet-class>org.apache.jasper.servlet.JspServlet</servlet-class> 
    <init-param> 
     <param-name>fork</param-name> 
     <param-value>false</param-value> 
    </init-param> 
    <init-param> 
     <param-name>xpoweredBy</param-name> 
     <param-value>false</param-value> 
    </init-param> 
    <load-on-startup>3</load-on-startup> 
</servlet> 
... 

Ví dụ để xác định phiên bản 1.8 cả hai như là nguồn và mục tiêu cho các tập tin JSP, bạn nên thay đổi nó trong này cách:

... 
<servlet> 
    <servlet-name>jsp</servlet-name> 
    <servlet-class>org.apache.jasper.servlet.JspServlet</servlet-class> 
    <init-param> 
     <param-name>fork</param-name> 
     <param-value>false</param-value> 
    </init-param> 
    <init-param> 
     <param-name>xpoweredBy</param-name> 
     <param-value>false</param-value> 
    </init-param> 
    <!-- added params --> 
    <init-param> 
     <param-name>compilerSourceVM</param-name> 
     <param-value>1.8</param-value> 
    </init-param> 
    <init-param> 
     <param-name>compilerTargetVM</param-name> 
     <param-value>1.8</param-value> 
    </init-param> 
    <!-- end added params --> 
    <load-on-startup>3</load-on-startup> 
</servlet> 
... 
Các vấn đề liên quan