একটি প্রোগ্রাম থেকে জেভিএম সংস্করণটি কীভাবে সন্ধান করবেন?


116

আমি একটি নমুনা জাভা ফাইল লিখতে চাই যাতে আমি JVM সংস্করণটি জানতে চাই যেখানে ক্লাসটি চলছে। কোন উপায় আছে?


3
কয়েকটি নোট সিস্টেমের বৈশিষ্ট্যগুলি এর জন্য বোঝানো হয়েছে তবে ডিও এটি মনে রাখবেন এটি একটি সুবিধাজনক ক্রিয়াকলাপ এবং অ্যাপলেট / ওয়েবস্টার্ট / বালি বক্স কোড এটি কার্যকর করতে সক্ষম হবে না (সিকিউরিটি এক্সসেপশন পেয়ে)। সাধারণত আপনি এটিকে একইভাবে চালাতে চানAccessController.doPrivileged(new PrivilegedAction<String>(...));
শে

3
@bestsss যদিও কিছু বৈশিষ্ট্য শুধুমাত্র অ্যাপলেট যেটা বিশ্বস্ত হয় পাওয়া যায়: java.specification.version, java.version& java.vm.versionসব একটি বালি-boxed অ্যাপলেট পাওয়া যায়, বা অন্তত তারা যেমন ছিল 1.6.0_23। আরও তথ্যের জন্য আমার উত্তর দেখুন ।
অ্যান্ড্রু থম্পসন

এছাড়াও কাজ করতে পারে এমন একটি জিনিস: java -version:)
Badp

উত্তর:


127

System.getProperty("java.version") আপনার যা প্রয়োজন তা ফেরত দেয়।

আপনি চাইলে জেএমএক্সও ব্যবহার করতে পারেন:

ManagementFactory.getRuntimeMXBean().getVmVersion()


6
এই জেএমএক্স কলটি "java.vm.version" এর সমতুল্য, "java.version" নয়। এগুলি সাধারণত (তবে প্রয়োজনীয় নয়) একই রকম হয়।
অ্যালেক্স মিলার

2
ম্যানেজমেন্টফ্যাক্টরি.সেটআরটাইমএমএক্সবিয়ান ()। GetSpecVersion () আরও সঠিক হতে পারে।
আন্টিওলো

এগুলি কখন আলাদা হয়, @ অ্যালেক্সমিলার? এটি আকর্ষণীয় মনে হচ্ছে।
ডেভিডএস

1
আসলে, আমি বলব যে তারা এক নয় । Java.vm.version হল jvm সংস্করণ নম্বর, "25.0-b70" এর মতো কিছু যেখানে java.version হল সাধারণ জাভা ভাষার সংস্করণ যা আপনি "1.8.0" দেখার অভ্যস্ত হয়ে উঠছেন।
অ্যালেক্স মিলার

3
জাভা 9 এই স্ট্রিং থেকে প্রত্যাবর্তিত মান পরিবর্তন করবে।
আলব্লু

54

মনে হয় কাজের java.specification.versionজন্য এটি সেরা।

ই জি

java.specification.version  1.6
java.version    1.6.0_23
java.vm.version 19.0-b09
java.runtime.version    1.6.0_23-b05

1
java.vm.versionহয় openjdk -11-হেডলেস মধ্যে নাল
User8461

@ ইউজার ৮৪61১ সম্ভবত যে কেউ খোলা জেডিকে তদারকি করে তার সাথে আপনার একটি বাগ রিপোর্ট উত্থাপন করা উচিত, সত্যি কথা বলতে আমি এই মানটি খুঁজে বের করার পক্ষে খুব বেশি পয়েন্ট দেখিনি। এখানে এটি বর্তমানে 25.45-b02.. যার অর্থ আমার কাছে কিছুই (কোনও দরকারী তথ্য সরবরাহ করে না)।
অ্যান্ড্রু থম্পসন

53

ব্যবহার করুন:

System.getProperty("java.version");

যেখানে java.versionবর্তমান জাভা সংস্করণ সম্পর্কিত অন্যান্য অনেক সিস্টেম বৈশিষ্ট্যের একটিতে প্রতিস্থাপন করা যেতে পারে। এখানে তাদের একটি সারণি দেওয়া হল:

 Property                        Value (OpenJDK 12)                        Value (Oracle JRE 8u201)                Value (Sun JRE 5u22)                                 Description
------------------------------- ----------------------------------------- --------------------------------------- ---------------------------------------------------- ---------------------------------------------------------------------------------------------------------------
 java.version                    "12"                                      "1.8.0_201"                             "1.5.0_22"                                           Java Runtime Environment version, which may be interpreted as a Runtime.Version
 java.version.date               "2019-03-19"                              null                                    null                                                 Java Runtime Environment version date, in ISO-8601 YYYY-MM-DD format, which may be interpreted as a LocalDate
 java.vendor                     "Oracle Corporation"                      "Oracle Corporation"                    "Sun Microsystems Inc."                              Java Runtime Environment vendor
 java.vendor.version             null                                      null                                    null                                                 Java vendor version
 java.vendor.url                 "https://java.oracle.com/"                "http://java.oracle.com/"               "http://java.sun.com/"                               Java vendor URL
 java.vendor.url.bug             "https://bugreport.java.com/bugreport/"   "http://bugreport.sun.com/bugreport/"   "http://java.sun.com/cgi-bin/bugreport.cgi"          Undocumented
 java.specification.name         "Java Platform API Specification"         "Java Platform API Specification"       "Java Platform API Specification"                    Java Runtime Environment specification name
 java.specification.vendor       "Oracle Corporation"                      "Oracle Corporation"                    "Sun Microsystems Inc."                              Java Runtime Environment specification vendor
 java.specification.version      "12"                                      "1.8"                                   "1.5"                                                Java Runtime Environment specification version, whose value is the feature element of the runtime version
 java.vm.name                    "OpenJDK 64-Bit Server VM"                "Java HotSpot(TM) 64-Bit Server VM"     "Java HotSpot(TM) 64-Bit Server VM"                  Java Virtual Machine implementation name
 java.vm.vendor                  "Oracle Corporation"                      "Oracle Corporation"                    "Sun Microsystems Inc."                              Java Virtual Machine implementation vendor
 java.vm.version                 "12+33"                                   "25.201-b09"                            "1.5.0_22-b03"                                       Java Virtual Machine implementation version which may be interpreted as a Runtime.Version
 java.vm.info                    "mixed mode, sharing"                     "mixed mode"                            "mixed mode"                                         Undocumented
 java.vm.specification.name      "Java Virtual Machine Specification"      "Java Virtual Machine Specification"    "Java Virtual Machine Specification"                 Java Virtual Machine specification name
 java.vm.specification.vendor    "Oracle Corporation"                      "Oracle Corporation"                    "Sun Microsystems Inc."                              Java Virtual Machine specification vendor
 java.vm.specification.version   "12"                                      "1.8"                                   "1.0"                                                Java Virtual Machine specification version, whose value is the feature element of the runtime version
 java.runtime.name               "OpenJDK Runtime Environment"             "Java(TM) SE Runtime Environment"       "Java(TM) 2 Runtime Environment, Standard Edition"   Undocumented
 java.runtime.version            "12+33"                                   "1.8.0_201-b09"                         "1.5.0_22-b03"                                       Undocumented
 java.class.version              "56.0"                                    "52.0"                                  "49.0"                                               Java class format version number
 jdk.debug                       "release"                                 null                                    null                                                 Undocumented
 sun.java.launcher               "SUN_STANDARD"                            "SUN_STANDARD"                          "SUN_STANDARD"                                       Undocumented
 sun.management.compiler         "HotSpot 64-Bit Tiered Compilers"         "HotSpot 64-Bit Tiered Compilers"       "HotSpot 64-Bit Server Compiler"                     Undocumented

সূত্র:

  • java -XshowSettings:all -versionবিভিন্ন জেভিএম সংস্করণে আউটপুট ।
  • জাভা এপিআই রেফারেন্স ডকুমেন্টেশন System.getProperties()



1

জাভা কোডের নীচে JVMআপনার বর্তমান আইডিইতে উপলব্ধ সংস্করণগুলি প্রদান করে

List<VirtualMachineDescriptor> descriptors = VirtualMachine.list();
          for (VirtualMachineDescriptor descriptor : descriptors) {
              System.out.println("Found JVM: " + descriptor.displayName());
              try {
                  VirtualMachine vm = VirtualMachine.attach(descriptor);
                  String version = vm.getSystemProperties().getProperty("java.runtime.version");
                  System.out.println("   Runtime Version: " + version);

                   String connectorAddress = vm.getAgentProperties().getProperty("com.sun.management.jmxremote.localConnectorAddress");
                  if (connectorAddress == null) {

                      connectorAddress = vm.getAgentProperties().getProperty("com.sun.management.jmxremote.localConnectorAddress");
                  }

                  JMXServiceURL url = new JMXServiceURL(connectorAddress);
                  JMXConnector connector = JMXConnectorFactory.connect(url);
                  MBeanServerConnection mbs = connector.getMBeanServerConnection();

                  ObjectName threadName = new ObjectName(ManagementFactory.THREAD_MXBEAN_NAME);
                  Integer threadCount = (Integer)mbs.getAttribute(threadName, "ThreadCount");
                  System.out.println("    Thread count: " + threadCount);
              }
              catch (Exception e) {
                  // ...
              }

আউটপুট:

Found JVM: /home/.../STS IDE/sts-bundle/sts-3.7.2.RELEASE//plugins/org.eclipse.equinox.launcher_1.3.100.v20150511-1540.jar -os linux -ws gtk -arch x86_64 -showsplash -launcher /home/.../STS IDE/sts-bundle/sts-3.7.2.RELEASE/STS -name STS --launcher.library /home/.../STS IDE/sts-bundle/sts-3.7.2.RELEASE//plugins/org.eclipse.equinox.launcher.gtk.linux.x86_64_1.1.300.v20150602-1417/eclipse_1612.so -startup /home/.../STS IDE/sts-bundle/sts-3.7.2.RELEASE//plugins/org.eclipse.equinox.launcher_1.3.100.v20150511-1540.jar --launcher.overrideVmargs -exitdata 1ad000f -product org.springsource.sts.ide -vm /usr/bin/java -vmargs -Dosgi.requiredJavaVersion=1.7 -Xms40m -XX:MaxPermSize=256m -Xverify:none -Xmx1200m -jar /home/.../STS IDE/sts-bundle/sts-3.7.2.RELEASE//plugins/org.eclipse.equinox.launcher_1.3.100.v20150511-1540.jar
   Runtime Version: 1.8.0_91-b14
Found JVM: com.intellij.idea.Main
   Runtime Version: 1.8.0_91-b14
Found JVM: Test
   Runtime Version: 1.7.0_80-b15

1

একজনের কী প্রয়োজন তার উপর নির্ভর করে অন্যান্য উত্তরগুলি সহায়তা করতে পারে।

আমার ক্ষেত্রে, তারা না। আমি একজন আইবিএম জেডিকে "পুরোপুরি যোগ্য" সংস্করণ তথ্যটি সন্ধান করছিলাম।

সুতরাং, "আসল" উত্তরটি হতে পারে: কেবলমাত্র সমস্ত সিস্টেমের বৈশিষ্ট্যগুলি ডাম্প করুন এবং পরীক্ষা করুন যা এমন কোনও আছে যা আপনাকে যা খুঁজছে তা দেয়।

আমার ক্ষেত্রে; আমি দেখতে পেয়েছি যে আইবিএম জেডি কে জানে

সম্পত্তি: java.fullversion

JRE 1.8.0 IBM J9 2.8 লিনাক্স amd64-64 সংক্ষেপিত রেফারেন্স 20161013_322271 (জেআইটি সক্ষম, এওটি সক্ষম)

জে 9 ভিএম - আর 28_জাভা 8_SR3_20161013_1635_B322271

জেআইটি - tr.r14.java.green_20161011_125790

জিসি - আর 28_জাভা 8_SR3_20161013_1635_B322271_CMPRSS জে 9 সিএল - 20161013_322271


1

কেবল কল করুন,

System.out.println(System.getProperty("java.specification.version"));
System.out.println(System.getProperty("java.runtime.version"));

উদাহরণ আউটপুট:

9
9+176


0

System.getProperty ( "sun.arch.data.model");

জাভা 32 বিট এবং 64 বিট নিয়ন্ত্রণ

    Integer vers = Integer.parseInt(System.getProperty("java.version").split("\\.")[1]);
    String bitMode = System.getProperty("sun.arch.data.model").toString();
    System.out.println(vers);
    System.out.println(bitMode);

আউটপুট:

6
32
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.