এই না একটি সাদাসিধা প্রশ্ন; আমার সাথে সহ্য করুন।
কেউ কি আমাকে বলতে পারবেন যে /usr/bin/java২০১০ সালের মাঝামাঝি থেকে অ্যাপল জেডিকে এবং ওরাকল ১.৮.০ জেডি কে উভয়কেই ওপল ১.৮.০ জেডি কে পাওয়া যায় এবং ব্যবহারের ফলাফল হিসাবে একটি অ্যাপল ম্যাকবুক প্রোতে একটি অনুরোধ করা হয়েছিল?
দয়া করে নোট করুন যে অ্যাপল-ইনস্টল করা জেডিকে ১.6 এর আমার সংস্করণটি সাম্প্রতিক পর্যায়ে জাভা পছন্দসমূহের অ্যাপ্লিকেশনটি তাদের দ্বারা সরানো হয়েছে, যাতে জাভা ভিএম ব্যবহার করার সিদ্ধান্ত নিরূপণ করে না।
/usr/libexec/java_homeতবুও দয়া করে নোট করুন যে আমার নীচে আমার উদাহরণগুলিতে (আমার দ্বারা, যাইহোক) অনুরোধ করা হয়নি।
ঠিক আছে, আমরা এখানে যাই।
ওরাকলের জেডিকে 1.8 ইনস্টল হয়ে যায় /Library/Java/JavaVirtualMachines/jdk1.8.0.jdk/। ফাইন।
/usr/bin/javaযা অ্যাপল নিয়ন্ত্রণে রয়েছে এটি একটি প্রতীকী লিংক যা নির্দেশ করছে /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/java। ( /System/Library/Frameworks/JavaVM.framework/Versions/Currentপ্রতীকী লিঙ্কটি /System/Library/Frameworks/JavaVM.framework/Versions/A(একটি ডিরেক্টরি) নির্দেশ করছে , সুতরাং, এক্সটেনশন দ্বারা, /usr/bin/javaপ্রতীকী লিঙ্ক রেজোলিউশন পয়েন্ট করার পরে /System/Library/Frameworks/JavaVM.framework/Versions/A/Commands/java।)
/System/Library/Frameworks/JavaVM.framework/Versions/A/Commands/javaহয় না একটি সিম্বলিক লিঙ্ক। এটি কার্যকর করা যায় able এটির সর্বশেষ পরিবর্তিত টাইমস্ট্যাম্পটি বেশ পুরানো, সম্ভবত আমি কিছুক্ষণ আগে জেডিকে 7 ইনস্টল করার সাথে সম্পর্কিত । কোনও ইভেন্টে, এটি জেডিকে 8 ইনস্টল করার তারিখের সাথে মিলে না।
/Library/Java/JavaVirtualMachines/jdk1.8.0.jdk/bin/javaআকারে সমান নয় /System/Library/Frameworks/JavaVM.framework/Versions/A/Commands/java। এটি কোনও প্রতীকী লিঙ্কও নয়। এটির সর্বশেষ পরিবর্তিত টাইমস্ট্যাম্পের সাথে মিলে যায় আমি যখন জেডিকে ৮ ইনস্টল করেছি These এই দুটি ভিন্ন প্রোগ্রাম।
তবুও, এই javaরূপগুলির মধ্যে যে কোনও একটিকে -versionআর্গুমেন্টের সাথে প্রার্থনা করলে তাদের 1.8 হিসাবে চিহ্নিত করে একটি সংস্করণ স্ট্রিং পাওয়া যায়।
কিভাবে শব্দার্থিক লিংক মধ্যে স্থাপন করা হয় /System/Library/Frameworks/JavaVM.framework/Versions/A/Commands/javaএবং/Library/Java/JavaVirtualMachines/jdk1.8.0.jdk/bin/java দেওয়া যে তন্ন তন্ন অন্যান্য করার জন্য একটি সিম্বলিক লিঙ্ক কি?
দ্বিতীয়ত, "মালিকানাধীন" /System/Library/Frameworks/JavaVM.framework/Versions/A: ওরাকল নাকি অ্যাপল?
তদতিরিক্ত, নীচের আউটপুটটি বিবেচনা করুন, বিশেষত argv[0]সেটিংসটি /usr/bin/javaপ্রোগ্রামের নাম হিসাবে চিহ্নিত করুন , যদিও আমি এটি কখনও টাইপ করি নি (নীচে আউটপুটে 13 লাইন):
Laird-Nelsons-MacBook-Pro:repository ljnelson$ env _JAVA_LAUNCHER_DEBUG=true /System/Library/Frameworks/JavaVM.framework/Versions/A/Commands/java -version
----_JAVA_LAUNCHER_DEBUG----
Launcher state:
debug:on
javargs:off
program name:java
launcher name:java
javaw:off
fullversion:1.8.0-b132
dotversion:1.8
ergo_policy:DEFAULT_ERGONOMICS_POLICY
Command line args:
argv[0] = /usr/bin/java
argv[1] = -version
JRE path is /Library/Java/JavaVirtualMachines/jdk1.8.0.jdk/Contents/Home/jre
jvm.cfg[0] = ->-server<-
jvm.cfg[1] = ->-client<-
69 micro seconds to parse jvm.cfg
Default VM: server
Does `/Library/Java/JavaVirtualMachines/jdk1.8.0.jdk/Contents/Home/jre/lib/server/libjvm.dylib' exist ... yes.
----_JAVA_LAUNCHER_DEBUG----
Launcher state:
debug:on
javargs:off
program name:java
launcher name:java
javaw:off
fullversion:1.8.0-b132
dotversion:1.8
ergo_policy:DEFAULT_ERGONOMICS_POLICY
Command line args:
argv[0] = /usr/bin/java
argv[1] = -version
JRE path is /Library/Java/JavaVirtualMachines/jdk1.8.0.jdk/Contents/Home/jre
jvm.cfg[0] = ->-server<-
jvm.cfg[1] = ->-client<-
33 micro seconds to parse jvm.cfg
Default VM: server
Does `/Library/Java/JavaVirtualMachines/jdk1.8.0.jdk/Contents/Home/jre/lib/server/libjvm.dylib' exist ... yes.
JVM path is /Library/Java/JavaVirtualMachines/jdk1.8.0.jdk/Contents/Home/jre/lib/server/libjvm.dylib
2242 micro seconds to LoadJavaVM
JavaVM args:
version 0x00010002, ignoreUnrecognized is JNI_FALSE, nOptions is 4
option[ 0] = '-Dsun.java.launcher.diag=true'
option[ 1] = '-Dsun.java.launcher.diag=true'
option[ 2] = '-Djava.class.path=.'
option[ 3] = '-Dsun.java.launcher=SUN_STANDARD'
Picked up _JAVA_OPTIONS: -Dfile.encoding=UTF-8
java version "1.8.0"
Java(TM) SE Runtime Environment (build 1.8.0-b132)
Java HotSpot(TM) 64-Bit Server VM (build 25.0-b70, mixed mode)
/System/Library/Frameworks/JavaVM.framework/Versions/A/Commands/javaএবং উভয়ই /usr/libexec/java_homeএকটি বেসরকারী কাঠামোটিকে ডেকে আনে JavaLaunching, যা অনিবন্ধিত। চলমান stringsএটিতে দাড়ায় যে এটা একটা সহজ মূঢ় স্ক্যান করে (!) এর /Library/Java/JavaVirtualMachinesএবং তারপর কিছু (অনথিভুক্ত) অনুসন্ধানমূলক ব্যবহার জিনিসটা যা সাম্প্রতিকতম হয়। কুরুচিপূর্ণ এবং অবাক।