2013-02-17 12 views
13

Tôi đang làm việc trên Dự án Scala với Eclipse (Indigo SR2). Hôm nay tôi cập nhật máy tính của tôi để Mountain Lion bởi vì chúng tôi cần một số chức năng của JDK 7. Cài đặt JDK 7 làm việc tốt:Bật JDK 7 trong Eclipse Indigo trên Mountain Lion

$ java -version 
java version "1.7.0_13" 
Java(TM) SE Runtime Environment (build 1.7.0_13-b20) 
Java HotSpot(TM) 64-Bit Server VM (build 23.7-b01, mixed mode) 

Trong Eclipse tôi đã thay đổi các cài đặt sau:

  • Java => Compiler => JRE cùng cài đặt: Thêm JDK1.7.0 với con đường /Library/Java/JavaVirtualMachines/jdk1.7.0_13.jdk/Contents/Home
  • Java => Compiler => JRE cùng cài đặt => Exucution Môi trường: Set JavaSE-1,7 đến JDK1.7.0
  • Java => Compiler: Tuân Level: 1,7
  • Scala => Trình biên dịch: Mục tiêu = jvm-1.7

Sau đó, tôi khởi động lại Eclipse và cố gắng chạy tập lệnh. Tuy nhiên, tôi luôn nhận được lỗi:

value getPlatformMXBean is not a member of object java.lang.management.ManagementFactory 

Said phương pháp là chỉ có sẵn như của Java 1,7 và Eclipse dường như không tìm thấy nó mặc dù lệnh chuột vào nó cho thấy các chức năng trong lớp ManagementFactory. Về Eclipse => Cấu hình cho thấy rằng nó vẫn đang sử dụng JDK 6 (java.runtime.version=1.6.0_37-b06-434-11M3909), nhưng tôi cần JDK 7.

Vì vậy, tôi đã cố gắng như sau (cũng như mô tả trên StackOverflow và các trang web khác):

  • add -vm /Library/Java/JavaVirtualMachines/jdk1.7.0_13.jdk/Contents/Home/bin/java vào file eclipse.ini (hai lần kiểm tra đường dẫn, vị trí thích hợp trong file theo eclipse website, và cũng có thể thêm xuống dòng ở giữa)
  • thêm cùng với Info.plist
  • $ /Applications/eclipse/Eclipse.app/Contents/MacOS/eclipse -vm /Library/Java/JavaVirtualMachines/jdk1.7.0_13.jdk/Contents/Home/
  • Tạo liên kết tượng trưng từ 1,6 đến 1,7

Nhưng không may mắn, Eclipse chỉ bắt đầu với JDK-6. Điều kỳ lạ là tôi có thể thay đổi rõ ràng JRE trong Run=>Run Configurations thành JDK7 và nó sẽ chạy theo cách đó. Nhưng tôi không muốn thay đổi điều đó cho mọi tập tin có thể chạy được.

Mọi đề xuất thêm?


Nhờ gợi ý từ EECOLOR, tôi có thể sử dụng plugin Scala trong Eclipse Juno, nơi JDK7 chạy tốt. Tuy nhiên, bây giờ tôi chạy vào những gì dường như là một vấn đề phụ thuộc. Ngoại lệ tôi nhận được có thể được xem tại đây: https://gist.github.com/anonymous/ac0f3a3655419e5149fa

Kỳ lạ, tệp chỉ khởi động tốt khi tôi chạy tệp từ dòng lệnh với một đơn giản java -cp JARFILE com.AND-SO-ON.file. Để xây dựng các nguồn và nhận được các phụ thuộc, chúng tôi sử dụng SBT.

My eclipse.ini trông như sau (mặc định trừ các Xmx):

-startup 
../../../plugins/org.eclipse.equinox.launcher_1.3.0.v20120522-1813.jar 
--launcher.library 
../../../plugins/org.eclipse.equinox.launcher.cocoa.macosx.x86_64_1.1.200.v20120522-1813 
-product 
org.eclipse.epp.package.java.product 
--launcher.defaultAction 
openFile 
-showsplash 
org.eclipse.platform 
--launcher.XXMaxPermSize 
256m 
--launcher.defaultAction 
openFile 
-vmargs 
-Dosgi.requiredJavaVersion=1.5 
-Dhelp.lucene.tokenizer=standard 
-XstartOnFirstThread 
-Dorg.eclipse.swt.internal.carbon.smallFonts 
-XX:MaxPermSize=256m 
-Xms40m 
-Xmx1060m 
-Xdock:icon=../Resources/Eclipse.icns 
-XstartOnFirstThread 
-Dorg.eclipse.swt.internal.carbon.smallFonts 

Dự án tương tự (ví dụ thực sự cùng một dự án, không chỉ cùng mã) không chạy vấn đề phụ thuộc trong Eclipse Indigo.Chỉnh sửa: Chỉ cần phát hiện ra, ngoại lệ này là do JDK7 và không phải là phiên bản Eclipse được sử dụng.

+0

Tôi thấy bạn đã thêm một chỉnh sửa khác. Theo như tôi có thể nói vấn đề trong stacktrace thực sự không có gì để làm với Eclipse. Nếu bạn cần trợ giúp giải quyết lỗi mà bạn tìm thấy trong stacktrace, tôi khuyên bạn nên bắt đầu một câu hỏi mới. – EECOLOR

Trả lời

1

Trong khi đó, tôi cố gắng giải quyết những vấn đề này.

Trước tiên hãy thử:

  • Update để JDK mới nhất (1.7.0u15 vào lúc này)
  • Clone mã từ Github lại
  • Cài đặt Eclipse Indigo
    • cài đặt lại Eclipse đã giải quyết được các vấn đề với JDK6, bây giờ nó chỉ bắt đầu với JDK7 mà không cần bất kỳ cấu hình nào thêm
  • Cài đặt plugin Scala
  • tạo một dự án Eclipse mới sử dụng sbt eclipse
  • nhập khẩu tạo ra dự án

Rất tiếc, không hoạt động! Tôi vẫn nhận được ngoại lệ này:

value getPlatformMXBean is not a member of object java.lang.management.ManagementFactory 

... đó là lạ bởi vì Eclipse tại thực sự chạy với JDK7. Nếu không đào sâu hơn, tôi chỉ cho Eclipse Juno một shot.

Second Hãy thử:

  • Do tất cả các tương tự như trên
  • Cài đặt Eclipse Juno thay vì Indigo
  • Yay, nó hoạt động! :)

Kết luận:

Vì vậy, tôi không chắc chắn lý do tại sao, nhưng Eclipse Indigo bằng cách nào đó không thích getPlatformMXBean. Nó dường như không phải là một vấn đề với JDK mà là chính Eclipse.

2

Tôi đang sử dụng phiên bản xem trước có hỗ trợ Juno tốt: http://scala-ide.org/download/milestone.html#scala_ide_21_milestone_3

+0

Cảm ơn, tôi đã thử nó nhưng bây giờ tôi nhận được một ngoại lệ mà tôi đã không nhận được trước và chạy nó từ dòng lệnh thay vì Eclipse hoạt động tốt. Vẫn đang điều tra. – str

+1

Ngoại lệ bạn đang nhận được là gì và hình dạng 'eclipse.ini' của bạn trông như thế nào? – EECOLOR

+0

Vui lòng xem chỉnh sửa của tôi trong câu hỏi. – str