Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

Memahami Java Oracle di Mac

JVM Oracle hanya diinstal di satu lokasi. Anda telah disesatkan!

Seperti yang telah Anda catat, perintah Java di /usr/bin adalah symlink ke binari di /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands . Binari dalam direktori tersebut adalah aplikasi rintisan yang menentukan VM Java mana yang akan digunakan*, dan kemudian menjalankan biner nyata yang sesuai dalam versi VM tersebut. Inilah sebabnya mengapa semua binari dalam /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands ukurannya hampir sama, meskipun Anda mengharapkan mereka mengimplementasikan fungsi yang sangat berbeda.

Anda dapat melihat ini beraksi dengan menggunakan dtrace :

[email protected]:~$ sudo dtrace -n 'syscall::posix_spawn:entry { trace(copyinstr(arg1)); }' -c "/usr/bin/java -version"
dtrace: description 'syscall::posix_spawn:entry ' matched 1 probe
dtrace: pid 44727 has exited
CPU     ID                    FUNCTION:NAME
  8    619                posix_spawn:entry   /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home/bin/java

dtrace yang diberikan doa mencetak argumen jalur ke posix_spawn ketika dipanggil dengan java -version . Dalam kasus saya, aplikasi rintisan telah menemukan runtime Java 1.6 Apple di /System/Library/Java/JavaVirtualMachines/1.6.0.jdk dan menjalankan versi java perintah.

Binari stub juga memiliki manfaat lain:ketika mendeteksi bahwa tidak ada Java VM yang diinstal, mereka akan meminta pengguna untuk menginstalnya.

Adapun CurrentJDK symlink, sebaik yang saya tahu ini demi kompatibilitas mundur dengan masa lalu ketika Apple adalah satu-satunya sumber JVM di OS X.

* Kombinasi faktor dipertimbangkan saat menentukan Java VM mana yang harus digunakan. JAVA_HOME digunakan jika disetel (coba JAVA_HOME=/tmp java ). Jika JAVA_HOME tidak diatur maka daftar semua mesin virtual pada sistem ditemukan. JAVA_VERSION dan JAVA_ARCH variabel lingkungan digunakan, jika disetel, untuk memfilter daftar mesin virtual ke versi tertentu dan arsitektur yang didukung. Daftar yang dihasilkan kemudian diurutkan berdasarkan arsitektur (lebih memilih 64-bit daripada 32-bit) dan versi (lebih baru lebih baik), dan kecocokan terbaik dikembalikan.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Hibernate tidak dapat mengambil SequenceInformation dari database

  2. Bagaimana Menemukan Waktu Eksekusi Kueri di Oracle SQL Developer?

  3. Oracle PL/SQL - Bagaimana cara membuat variabel array sederhana?

  4. Oracle PLS-00363:ekspresi '' tidak dapat digunakan sebagai target penugasan

  5. Bagaimana cara mendapatkan tahun berjalan menggunakan SQL di Oracle?