এই না একটি সাদাসিধা প্রশ্ন; আমার সাথে সহ্য করুন।
কেউ কি আমাকে বলতে পারবেন যে /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
এবং তারপর কিছু (অনথিভুক্ত) অনুসন্ধানমূলক ব্যবহার জিনিসটা যা সাম্প্রতিকতম হয়। কুরুচিপূর্ণ এবং অবাক।