Oracle
 sql >> база данни >  >> RDS >> Oracle

Разбиране на Java на Oracle на Mac

JVM на Oracle е инсталиран само на едно място. Бяхте подведени!

Както отбелязахте, Java командите в /usr/bin са символни връзки към двоични файлове в /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands . Двоичните файлове в тази директория са заглушки приложения, които определят коя Java VM да се използва* и след това изпълняват съответния реален двоичен файл в тази версия на VM. Ето защо всички двоични файлове в /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands са почти идентични по размер, въпреки факта, че бихте очаквали да имплементират доста различна функционалност.

Можете да видите това в действие, като използвате 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 извикването отпечатва аргумента пътя към posix_spawn когато се извиква от java -version . В моя случай приложението-крайник е намерило времето за изпълнение на Java 1.6 на Apple в /System/Library/Java/JavaVirtualMachines/1.6.0.jdk и извиква тази версия на java команда.

Двоичните файлове на мъничките имат и друго предимство:когато открият, че не е инсталирана Java VM, те ще подканят потребителя да инсталира такава.

Що се отнася до CurrentJDK symlink, доколкото мога да кажа това в името на обратната съвместимост с миналото, когато Apple беше единственият източник на JVM на OS X.

* Комбинация от фактори се взема предвид, когато се определя коя Java VM трябва да се използва. JAVA_HOME се използва, ако е зададено (опитайте JAVA_HOME=/tmp java ). Ако JAVA_HOME не е зададен, тогава се открива списъкът с всички виртуални машини в системата. JAVA_VERSION и JAVA_ARCH променливите на средата се използват, ако са зададени, за филтриране на списъка с виртуални машини до определена версия и поддържана архитектура. След това полученият списък се сортира по архитектура (предпочита се 64-битова пред 32-битова) и версия (по-нова е по-добра) и се връща най-доброто съвпадение.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да създадете DMZ за EBS R12

  2. Как да разрешите ORA-29285:грешка при запис на файл

  3. Функция COS() в Oracle

  4. Oracle (Oracle?) Joins - инструмент/скрипт за преобразуване?

  5. не може да зареди oci8 -> Фатална грешка:Извикване на недефинирана функция oci_connect()