2009-12-31 27 views
7

Tôi có thể chạy nhiều hơn một JVM không? Nếu có thì làm thế nào tôi có thể tìm thấy một lớp cụ thể được nạp trên JVM nào?Tôi có thể chạy nhiều hơn một JVM trên PC đơn lẻ của mình không?

+1

tại sao bạn muốn biết VM đã tải lớp gì? Nếu chúng ta biết rằng có lẽ chúng ta có thể đưa ra câu trả lời cho bạn. – TofuBeer

+0

Điều này nghe có vẻ như bạn đang cố gắng làm điều gì đó nên được thực hiện theo cách khác. Bạn không cần phải biết lớp nào được tải trên một JVM. –

Trả lời

12

Nó không hoàn toàn rõ ràng những gì bạn có ý nghĩa, nhưng:

  • Bạn có thể có nhiều hơn một máy ảo (phiên bản/thương hiệu vv) được cài đặt trên cùng một máy
  • Bạn có thể chạy nhiều hơn một java quá trình, cho dù cùng một phiên bản JVM hoặc các phiên bản JVM khác nhau

Trừ khi bạn đang chạy một tác nhân gỡ lỗi hoặc một cái gì đó tương tự, tôi không biết cách nào để hỏi quá trình JVM cho dù nó được nạp một lớp cụ thể hay không. Có vẻ như một chút yêu cầu kỳ lạ - tại sao bạn muốn làm điều này?

4

Bạn có thể chạy như nhiều JVM như bạn có thể phù hợp trên đĩa của bạn và trong bộ nhớ :)

Bất cứ khi nào bạn khởi động một ứng dụng Java, bạn đang bắt đầu đầu tiên JVM và sau đó nói với nó mà ứng dụng để chạy. Câu trả lời cho "JVM" nào là đơn giản: JVM mà bạn đã nạp ứng dụng!

Có thể thực hiện một số điều không quan tâm bí mật với trình nạp lớp sẽ chứng minh ngoại lệ cho những gì tôi vừa nói. Nhưng đó là sự thật trong trường hợp chung và phần lớn tất cả các ứng dụng.

0

Nhiều JRE (Môi trường thời gian chạy Java) rất có thể. Tôi làm như vậy. Vấn đề là JVM không phải lúc nào cũng chạy trên hệ thống của bạn. Nó giống như bất kỳ phần mềm nào khác. Khi bạn chạy một tệp jar, nó sẽ bắt đầu chạy.

Giá trị mặc định JRE được thiết lập trong Environment Variables như JAVA_HOME (click chuột phải máy tính của tôi -> properties -> tab Advanced -> Environment Variables)

Để chạy một file jar bạn chỉ cần chạy lệnh này:

C: \ Program Files \ Java \ j2re1.4.2_04 \ bin \ javaw.exe" -jar Myfile.jar

Bạn có thể sử dụng bất kỳ jre javaw khác để chạy một tệp jar.

Xin lưu ý rằng j2re1.4.2_04 có thể không phải là phiên bản jre của bạn.

Chỉnh sửa:

Tất cả các lớp trong tệp jar chạy trên một JVM. Như bạn có thể đoán. Xem JAVA_HOME của bạn, nó là mặc định.

3

Tôi có thể chạy nhiều hơn một JVM không?

Có - chỉ cần chạy 'java' quá trình

Nếu có thì làm thế nào tôi có thể tìm thấy một lớp học đặc biệt được nạp mà JVM?

Chương trình 'jps' được phân phối với SDK JAVA sẽ liệt kê tất cả các quá trình java (JVM) bị hỏng trên máy của bạn, lớp chính đang được thực thi bởi mỗi JVM và đường dẫn lớp. Bạn sẽ phải xem các lọ hoặc các lớp nào nằm trên mỗi classpath để tìm ra nếu một lớp được nạp hay không.

thử chạy

jps -mlvV 

và xem những gì bạn nhận được

6

Có, bạn có thể chạy nhiều của JVM trên một máy duy nhất.

Mặt trời gói các công cụ để chạy jvm theo một vài cách khác nhau. Thông thường, bạn có một bộ phát triển java (jdk) hoặc java standard edition (jse) được cài đặt làm mặc định. Những gói đó bao gồm một chương trình java được gọi để bắt đầu một jvm. Ngoài ra, jdk cũng chứa một số lệnh bổ sung (như javac) cho các nhà phát triển.

Bạn có thể có nhiều jdk và hoặc jse có sẵn trên một máy. Trên các cửa sổ, các gói jdk và jse thường được cài đặt dưới Program Files/java (đây là từ bộ nhớ vì hiện tại tôi không có máy tính)

Trên máy Mac xem dưới /System/Library/Frameworks/JavaVM.framework/Versions .

Trên Linux, tôi sẽ sử dụng lệnh which java để xác định vị trí lệnh mặc định java được cài đặt (thường là/usr/bin). Sau đó, hãy thực hiện ls -al | grep java (ví dụ: bên trong/usr/bin) và ghi chú nơi điểm liên kết tượng trưng để tìm ra nơi có thể có các phiên bản khác được cài đặt.

Khi bạn đã tìm ra vị trí của mỗi jdk và jse khác nhau trên hệ thống, bạn có thể bắt đầu tìm ra phiên bản java nào được sử dụng để khởi động từng chương trình.

Mỗi chương trình java sẽ khởi động bằng cách sử dụng jvm mặc định. Mở cửa sổ lệnh hoặc thiết bị đầu cuối và thử java -version để xác định phiên bản nào là mặc định hiện tại.

Thay vì sử dụng phiên bản java mặc định, các chương trình cũng có thể được bắt đầu sử dụng một phiên bản java cụ thể. Ví dụ: đôi khi tôi tạo lối tắt cửa sổ tùy chỉnh để mở Eclipse bằng phiên bản jdk cụ thể.

Kể từ java 5, có một công cụ có tên là jconsole cũng có thể giúp bạn xác định chương trình nào đang chạy trong đó verions of jvms. Đơn giản chỉ cần mở một giao diện điều khiển, và gõ jconsole và bạn sẽ nhận được một giao diện đẹp cho thấy tất cả các chương trình đang chạy trong jvm mặc định. Tôi nghĩ rằng bạn thậm chí có thể kiểm tra các chương trình classpaths.

Hy vọng rằng sẽ giúp, chúc bạn may mắn!

1

Có, bạn có thể cài đặt nhiều hơn một jvm trong PC của bạn, vì hệ điều hành tải một thể hiện của jvm (không phải toàn bộ jvm) trong RAM. Chúng ta có thể gọi các jvm khác nhau như JDK 1.4 hoặc JDK 1.6 bằng cách thiết lập đường dẫn của nó.

0

Bạn có thể chạy bao nhiêu tùy thích JVM trên cùng một máy. Bạn chỉ cần mở một số cửa sổ CommandPrompt và chạy những gì bạn muốn thông qua ứng dụng java hoặc javaw. Lớp mà mỗi JVM đang chạy là lớp THAT có chứa phương thức main(). Phương thức Main() là phương thức đầu tiên chạy khi bạn khởi động một số ứng dụng Java. Tất nhiên, main() nằm trong một số lớp học của bạn. Đó là tất cả.

Các vấn đề liên quan