2012-03-06 46 views
9

Trong linux, có thể có một ứng dụng web được viết bằng Java 7 được triển khai trên tomcat6 không? Nếu vậy, cấu hình nào cần được sửa đổi để cho phép nó hoạt động?Tomcat6 và Java 7

Tôi đã thử thay đổi biến số JAVA_HOME trong tệp tomcat6.conf và khởi động lại, nhưng nó vẫn đang sử dụng 1,6 theo trang web quản lý tomcat và chỉ các ứng dụng được viết bằng 1.6 hoặc thấp hơn triển khai chính xác.

Tôi có cả cài đặt jdk 1.6 và 1.7 ở các vị trí khác nhau.

+1

Không chắc chắn tệp 'tomcat6.conf' được cho là gì, tôi chưa bao giờ thấy điều đó.Bạn có thể muốn kiểm tra nếu có tập lệnh batch/shell 'setenv' trong thư mục' bin' đặt biến JAVA_HOME –

+2

Tomcat 6 không hỗ trợ chính thức JDK 7 (và dựa trên tất cả các báo cáo lỗi mà tôi nghi ngờ bạn muốn cố gắng để làm cho nó quá làm việc với nó). Hoặc biên dịch ứng dụng của bạn với chế độ tương thích 1.6 hoặc nâng cấp lên Tomcat 7. – Perception

Trả lời

8

Tôi đã có một vấn đề lớn khi tôi biên soạn servlet của tôi sử dụng java JDK 1.7.0 , Tomcat sẽ không khởi động do lỗi phiên bản manor.major thời gian chạy.

Để làm Tomcat6 chạy lớp học của bạn sử dụng JDK 1.7 làm như sau:

  1. Mở tệp /etc/init.d/tomcat6 với quyền root.

  2. Bạn sẽ tìm thấy một biến gọi là JDK_DIRS tại dòng 83.

  3. Comment nó ra bằng cách thêm # vào đầu dòng.

  4. Viết dưới sau nó: JDK_DIRS="/usr/lib/jvm/java-1.7.0-openjdk-i386"

  5. Lưu và khởi động lại tomcat

3

Tôi đã gặp phải vấn đề tương tự và có vẻ như JDK 1.7 không có khả năng tương thích ngược với Tomcat 6. Bạn cần triển khai nó lên Tomcat 7 hoặc biên dịch lại bằng JDK 1.6.

+3

Điều đó nghe có vẻ khá khó đối với tôi. Bạn có bất cứ điều gì để trở lại mà lên với? – skaffman

+2

Tomcat chính nó chạy tốt trên 1,6, nhưng câu hỏi là về phiên bản tomcat sử dụng để khởi động trường hợp của servlets. Bản thân Tomcat 6 sẽ không chạy một servlet được viết bằng Java 1.7. – Zero

+0

Câu trả lời này sẽ * không * là câu trả lời hay nhất vì nó có thể gây hiểu nhầm. Java 7 DOES chạy trên Tomcat 6. (Chỉ cần chú ý đến những gì @Zero đang nói) –

4

Tôi chỉ đang sử dụng các cài đặt Tomcat mặc định mà không cần thiết lập bất kỳ tệp cấu hình nào ngoại trừ tomcat-users.xml cho đăng nhập GUI.

Apache Tomcat 6.0.35 và 6.0.16 mỗi lần chạy trên JVM 1.7.0_03-b05 (Windows + Linux).

JAVA_HOME phải trỏ đến thư mục JDK; ví dụ:

C:\Program Files\Java\jdk1.7 (Windows)

hoặc

/usr/lib/jvm/java-6-sun (Ubuntu, liên kết này điểm để cài đặt JDK)

+0

Vấn đề không chạy tomcat trực tiếp bằng cách sử dụng Java 1.7, đó là tốt. Vấn đề là, phiên bản tomcat nào sử dụng để khởi chạy các servlet. Câu hỏi hỏi làm thế nào để có được tomcat để sử dụng Java 1.7 để khởi động servlets của nó, không cho dù bạn có thể khởi động tomcat chính nó trên Java 1.7, mà rõ ràng là hoạt động tốt. – Zero

1

tôi thấy nó làm cho một sự khác biệt Java 7 được sử dụng bởi Tomcat 6.

#JAVA_HOME=/usr/lib/jvm/java-7-openjdk ## Did not work 
JAVA_HOME=/usr/lib/jvm/java-7-oracle ## DID WORK 

Bởi "Đã không hoạt động", tôi đặc biệt có nghĩa là, khi khởi động ứng dụng web của tôi, tôi nhận được ClassNotFoundException: java.lang.AutoCloseable. Giao diện này là new with Java 7.

Caused by: java.lang.NoClassDefFoundError: java/lang/AutoCloseable 
    at java.lang.ClassLoader.defineClass1(Native Method) 
    at java.lang.ClassLoader.defineClass(ClassLoader.java:751) 
    at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:144) 
    at org.apache.catalina.loader.WebappClassLoader.findClassInternal(WebappClassLoader.java:2818) 
    at org.apache.catalina.loader.WebappClassLoader.findClass(WebappClassLoader.java:1159) 
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1647) 
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1526) 
    at org.springframework.util.ClassUtils.forName(ClassUtils.java:249) 
    at org.springframework.beans.factory.support.AbstractBeanDefinition.resolveBeanClass(AbstractBeanDefinition.java:395) 
    at org.springframework.beans.factory.support.AbstractBeanFactory.doResolveBeanClass(AbstractBeanFactory.java:1349) 
    at org.springframework.beans.factory.support.AbstractBeanFactory.resolveBeanClass(AbstractBeanFactory.java:1320) 
    ... 47 more 
Caused by: java.lang.ClassNotFoundException: java.lang.AutoCloseable 
     at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1680) 
     at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1526) 
     ... 58 more