Push-Nachrichten von MacTechNews.de
Würden Sie gerne aktuelle Nachrichten aus der Apple-Welt direkt über Push-Nachrichten erhalten?
Forum>Software>JAVA_HOME Variable setzen

JAVA_HOME Variable setzen

hakken
hakken22.07.1416:40
Hallo,

irgendwie habe ich mein JAVA zerschossen.

Folgende Meldung erhalte ich, wenn ich ein Programm starten will:
Detecting JVM PermGen support...
PermGen switch is NOT supported and will NOT be set automatically.
Unable to find any JVMs matching version "(null)".
No Java runtime present, try --request to install.
Neither the JAVA_HOME nor the JRE_HOME environment variable is defined
At least one of these environment variable is needed to run this program
MacServer:~ admin$ ~/.bash_profile
-bash: /Users/admin/.bash_profile: No such file or directory

Was kann man tun?

Reicht es z.B. die JAVA_HOME Variable neu zu setzen?

Diese Anleitung dazu habe ich leider nicht kapiert.
Was für ein Editor ist gemeint??

Ich habe OS 10.7.5 mit dem aktuellen Java 7 (65) installiert.

Für Tips wäre ich dankbar...
0

Kommentare

penumbra22.07.1416:56
schau mal hier:


Mit "Editor" ist irgendein Texteditor gemeint. Wenn Du Dateien im Terminal editieren willst, empfiehlt sich "nano" (wie im verlinkten Beispiel beschrieben).

nano ist im Terminal "enthalten" (muss nicht installiert werden).
Kurze Erklärung für nano:
„enjoy life in full trains“
0
hakken
hakken31.07.1408:18
Nach 3 Stunden googlen musste ich feststellen, dass es sich um ein OS X Problem handelt welches nach einem Java Update auftreten kann. Es gibt, je nach Systemversion, verschiedene Lösungsänsätze (z.B. ). Letztendlich half, die Java SDK drüberzuinstallieren .
0
Jethro100031.07.1421:46
Ich hatte das gleiche Problem. Einfach in der .profile hat in Verbindung mit Eclipse nicht geholfen.

Einzig allein in der /etc/launchd.conf den Eintrag

setenv JAVA_HOME /Library/Java/Home

vornehmen, hat alle meine Probleme beseitigt. Neu starten nicht vergessen,.
Damit wird die Variable global und nicht nur für die Shell gesetzt.
0
sierkb31.07.1422:58
Jethro1000
Ich hatte das gleiche Problem. Einfach in der .profile hat in Verbindung mit Eclipse nicht geholfen.

Evtl. irgendwas falsch gemacht oder vergessen? Wäre ja möglich.
Jethro1000
Einzig allein in der /etc/launchd.conf den Eintrag

Das benutzerspezifische Äquivalent zum systemweiten /etc/launchd.conf, nämlich ~/.launchd.conf geht leider immer noch nicht, ist leider immer noch ohne Funktion.
Theoretisch ist das vorgesehen, so jedenfalls sagt das die Manpage zu launchd.conf :
Apple, man launchd.conf
FILES
$HOME/.launchd.conf Your launchd configuration file (currently unsupported).
/etc/launchd.conf The system's launchd configuration file.
Jethro1000
setenv JAVA_HOME /Library/Java/Home

Ist aber nicht der von Apple empfohlene Weg und womöglich auch nicht der beste Weg.
Zumal Du das mit Deinem Vorschlag systemweit und für alle Nutzer gleichermaßen verbindlich setzt. Das aber womöglich nicht zielführend ist, weil jeder Nutzer möglicherweise eine andere JVM präferiert oder gezielt nutzen will oder muss, sollten mehrere JVMs in mehreren unterschiedlichen Versionen parallel installiert sein und zur Auswahl stehen.

Und der Pfad, den Du da nennst, nicht unbestimmt stimmen muss, wenn man andere als Apples JDK/JVM installiert hat, sich somit ändern kann und von Apple deshalb als deprecated (sprich: missbilligt) gekennzeichnet ist, Apple von der Benutzung dieses Pfades und Symlinks (den sie mal angekündigt haben, in einer der zukünftigen Versionen von OSX zu entfernen). Er ist nämlich allein von Apple gesetzt, ändert sich nicht und zeigt per Symlink stets auf Apples JDK6, so es installiert ist, welches nicht unter /Library/Java liegt, sondern unter /System/Library/Java/JavaVirtualMachines – völlig ignorierend, ob und wo auch noch andere, neuere JDKs oder JREs installiert sind, zum Beispiel das/die von Oracle.

Oracles JDKs und das JRE, die liegen jedoch nicht in der System-Domain unterhalb von /System/Java, sondern die liegen unterhalb von /Library/Java/JavaVirtualMachines bzw. das JRE als Browser-Plugin unter /Library/Internet Plugins

Apple hat zum Setzen der Umgebungsvariablen in OSX seit einiger Zeit (mac OSX 10.5) ein Werkzeug ins Betriebssystem integriert, dass genau das machen soll, was hier gefragt ist: JAVA_HOME abfragen/setzen/filtern. Und zwar alles, was es diesbzgl. findet bzw. mit der Priorität für die am höchsten gefundene/installierte Version (es sei denn, man ändert das gezielt durch entsprechende Parameter bei der Abfrage):

  • /usr/libexec/java_home

Manpage dazu: man java_home
Oder auch online: Apple Manpage: java_home - return a value for $JAVA_HOME

Auch gibt's mindestens eine Support-Seite von Apple zu dem Thema:

Apple: Mac Developer Library: Technical Q&A QA1170
Important Java Directories on Mac OS X insbesondfere mit diesem Abschnitt hier:
Apple, QA1170
Java Home

Many Java applications need to know the location of a $JAVA_HOME directory. The $JAVA_HOME on Mac OS X should be found using the /usr/libexec/java_home command line tool on Mac OS X 10.5 or later. On older Mac OS X versions where the tool does not exist, use the fixed path "/Library/Java/Home". The /usr/libexec/java_home tool dynamically finds the top Java version specified in Java Preferences for the current user. This path allows access to the bin subdirectory where command line tools such as java, javac, etc. exist as on other platforms. The tool /usr/libexec/java_home allows you to specify a particular CPU architecture and Java platform version when locating a $JAVA_HOME.

Another advantage of dynamically finding this path, as opposed to hardcoding the fixed endpoint, is that it is updated when a new version of Java is downloaded via Software Update or installed with a newer version of Mac OS X. For this reason, it is important that developers do not install files in the JDKs inside of /System, since the changes will be lost with subsequent updates by newer versions of Java.

To obtain the path to the currently executing $JAVA_HOME, use the java.home System property.


Hier übrigens wird's in der zweiten Hälfte des Artikels auch nochmal schön erklärt, was man mit /usr/libexec/java_home für schöne und reichhaltige Möglichkeiten hat:

Henri Gomez Blog (20.07.2012): Understanding Java From Command Line on OSX


Korrekter, treffender und zukunftssicherer als Dein Vorschlag und statdessen Apples Ratschlag folgend, wäre also z.B. Folgendes in der Datei ~/.bash_profile:

export JAVA_HOME=`/usr/libexec/java_home`
oder, wenn man mehrere Javas installiert hat und JAVA_HOME speziell auf Oracles Java 7 setzen will:
export JAVA_HOME=`/usr/libexec/java_home -v 1.7`
oder gleichlautend für das aktuelle Java 8:
export JAVA_HOME=`/usr/libexec/java_home -v 1.8`

Wie diese ~/.profile Datei erstellen und diese Infos da hineinschreiben?
Terminal öffnen und folgenden Einzeiler schreiben:

echo 'export JAVA_HOME=`/usr/libexec/java_home -v 1.7`' > .bash_profile

Ausloggen. Wieder einloggen. Gut is'.
Jethro1000
Neu starten nicht vergessen

Aus- und wieder einloggen reicht.
Jethro1000
Damit wird die Variable global und nicht nur für die Shell gesetzt.

Du kennst den Unterschied zwischen ~/.profile, ~/.bash_profile und ~/.bashrc und bei welcher Art von Login und in welcher Reihenfolge sie vom System abgearbeitet werden? Und dass man ~/.bash_profile und ~/.bashrc sourced (oder umgekehrt – je nachdem, was man wo zuerst reinschreibt), sprich: die eine Datei von der anderen aufrufen lässt und somit integriert, um derlei nicht nur dann wirken zu lassen, wenn man das terminal öffnet und somit eine sog. interaktive Shell eröffnet, sondern auch gleich beim Login, der sog. Login-Shell des Benutzers nach dem Hochfahren?


Bzgl. dem von Dir angesprochenen Eclipse und Java unter OSX steht z.B. im Eclipse-Wiki Folgendes:
Eclipse Wiki
-vm value: Mac OS X Example

On a Mac OS X system, you can find eclipse.ini by right-clicking (or Ctrl+click) on the Eclipse executable in Finder, choose Show Package Contents, and then locate eclipse.ini in the MacOS folder under Contents.

To specify Java 6 for OS X:

-vm
/System/Library/Frameworks/JavaVM.framework/Versions/1.6.0/Home/bin/java

For versions of Mac OS X 10.7+ the location has changed to

/Library/Java/JavaVirtualMachines/<''jdk_name_ver''>/Contents/Home/...

To be safer, determine the location for the JDK you intend to use via the utility /usr/libexec/java_home and put this value with .../bin/java appended into the Eclipse.ini file.
Quelle:
0
sierkb31.07.1423:12
Nachtrag bzgl. Apples manpage von /usr/libexec/java_home:
Apple, manpage java_home
NAME

java_home - return a value for $JAVA_HOME

SYNOPSIS

/usr/libexec/java_home [options]


DESCRIPTION

The java_home command returns a path suitable for setting the JAVA_HOME environment variable. It determines this path from the user's enabled and preferred JVMs in the Java Preferences application. Additional constraints may be provided to filter the list of JVMs available. By default, if no con-straints constraints match the available list of JVMs, the default order is used. The path is printed to standard output.

[…]

USAGE

/usr/libexec/java_home helps users set a $JAVA_HOME in their login rc files, or provides a way for
command-line Java tools to use the most appropriate JVM which can satisfy a minimum version or architecture requirement. The --exec argument can invoke tools in the selected $JAVA_HOME/bin directory, which is useful for starting Java command-line tools from launchd plists without hardcoding the full path to the Java command-line tool.


Usage for bash-style shells:
$ export JAVA_HOME=`/usr/libexec/java_home`

Usage for csh-style shells:
% setenv JAVA_HOME `/usr/libexec/java_home`
0
penumbra01.08.1408:39
wow, jetzt wurde es mal wirklich informativ, und das so spät am Abend
Danke!
„enjoy life in full trains“
0

Kommentieren

Diese Diskussion ist bereits mehr als 3 Monate alt und kann daher nicht mehr kommentiert werden.