Java JAVA_HOME wird nichr richtig erkannt

KUGA

Lt. Commander
Registriert
Mai 2008
Beiträge
1.425
Hallo, ich habe ein seltsames Problem.

Und zwar scheint es 2 Versionen der Variable JAVA_HOME zu geben.
ich habe die Variable (nach installation des JDK) manuell auf "C:\Program Files\Java\jdk1.7.0_03\bin" gelegt (und neugestartet), vorher war es "C:\Program Files\Java\jre7".

Wenn ich ein Hello World in Eclipse schreibe, kann ich es ganz normal kompilieren (konnte ich auch schon mit dem alten pfad). im CMD funktioniert es auch:
Code:
C:\Users\Felix>cd %JAVA_HOME%

C:\Program Files\Java\jdk1.7.0_03\bin>

Problem: Wenn ich in ImageJ (Compile and Run...) oder mit der Build.xml (Methode 3) in Eclipse versuche kommt immer der fehler, dass die JAVA_HOME Variable noch auf dem JRE liegt und er deshalb die javac.exe nicht findet.
Code:
BUILD FAILED
C:\Freigabe\Felix\Dokumente\eclipse\ImageJ\build.xml:9: Unable to find a javac compiler;
com.sun.tools.javac.Main is not on the classpath.
Perhaps JAVA_HOME does not point to the JDK.
It is currently set to "C:\Program Files\Java\jre7"

Ich hoffe ihr könnt mir helfen :)
 
Seit wann gibt es %JAVA_HOME%? Normalerweise ist die java.exe, javaw.exe und javac.exe im bin-Pfad der JRE/JDK und dieser ist am %path% angehangen.
 
chriz0101 schrieb:
Vielleicht reicht es auch hier den bin Ordner vom jdk in den PATH zu schreiben?

Yuuri schrieb:
Seit wann gibt es %JAVA_HOME%? Normalerweise ist die java.exe, javaw.exe und javac.exe im bin-Pfad der JRE/JDK und dieser ist am %path% angehangen.

meint ihr beide das gleiche? so richig versteh ich euch nicht. in %path% steht bei mir:
Code:
C:\WinAVR-20100110\bin;C:\WinAVR-20100110\utils\bin;C:\Program Files (x86)\AMD APP\bin\x86_64;C:\Program Files (x86)\AMD APP\bin\x86;%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;%SYSTEMROOT%\System32\WindowsPowerShell\v1.0\;C:\Program Files (x86)\ATI Technologies\ATI.ACE\Core-Static

also nix von java. Eclipse und ImageJ (ist ja auch die selbe build.xml) greifen außerdem eindeutig auf JAVA_HOME zu, das kommt in beiden fehlermeldungen.
den JDK pfand anfügen hilt auch nichts, hab ich ausprobiert
 
Zuletzt bearbeitet:
Die Variable kann es nur einmal geben. Sie zeigt wenn, auf den Installationspfad eines JDK/JRE. Du musst mithin den Pfad auf "C:\Program Files\Java\jdk1.7.0_0" ändern.

Aber der Fehler mit Ant liegt woanders. Zur Kompilierung wird offensichtlich ein JDK benötigt (nur das hat die monierte tools.jar), aber aktuell verwendet wird ein JRE.

JAVA_HOME wird nicht zwingend von Programmen ausgewertet. Du solltest in ImageJ das JDK korrekt konfigurieren. Mit %PATH% hat das vermutlich nichts zu tun.
Ergänzung ()

Ev. ist es auch nur die build.xml, die versucht JAVA_HOME auszuwerten. Schau Dir mal die entsprechende Sektion an.
 
KUGA schrieb:
Eclipse und ImageJ (ist ja auch die selbe build.xml) greifen außerdem eindeutig auf JAVA_HOME zu, das kommt in beiden fehlermeldungen.
Mein Eclipse funktioniert ohne JAVA_HOME problemlos.
KUGA schrieb:
den JDK pfand anfügen hilt auch nichts, hab ich ausprobiert
C:\Program Files\Java\jdk1.7.0_03

oder

C:\Program Files\Java\jdk1.7.0_03\bin

?
 
Eclipse kommt sowohl ohne %JAVA_HOME% als auch ohne hinterlegtem Pfad zur Java im %Path% aus.
Windows > Preferences > Java > Installed JRE's.
Da kannst du sie eintragen und als Std. setzen.

Würde trotzdem mal weiter schauen und deine Pfade aufräumen.


edit:
Ja, okay. Dann vergiss es :)
 
Zuletzt bearbeitet:
soares schrieb:
Ergänzung ()

Ev. ist es auch nur die build.xml, die versucht JAVA_HOME auszuwerten. Schau Dir mal die entsprechende Sektion an.

Das denke ich auch. Ich kenn mich damit nicht aus, hab die nur kopiert, wie beschrieben. wenn du dich damit besser auskennst, hier der code:
Code:
<!-- Ant makefile for ImageJ -->

<project name="ImageJ" default="run">

  <target name="compile" description="Compile everything.">
    <!-- First, ensure the build directory exists. -->
    <mkdir dir="build" />
    <!-- Build everything; add debug="on" to debug -->
    <javac srcdir="." destdir="build" optimize="on" source="1.5" target="1.5" debug="on">
      <!-- The plugins directory only needs to be 
             present at runtime, not at build time. -->
      <exclude name="plugins/**"/>
    </javac>
  </target>
  

  <target name="build" depends="compile" description="Build ij.jar.">
    <!-- Copy needed files into the build directory. -->
    <copy file="IJ_Props.txt" todir="build" />
    <copy file="images/microscope.gif" tofile="build/microscope.gif" />
    <copy file="images/about.jpg" tofile="build/about.jpg" />
	<copy file="plugins/MacAdapter.class" tofile="build/MacAdapter.class" /> 
	<copy file="plugins/JavaScriptEvaluator.class" tofile="build/JavaScriptEvaluator.class" /> 
	<copy file="plugins/MacClipboard.class" tofile="build/MacClipboard.class" /> 
    <copy todir="build/macros"><fileset dir="macros"/></copy>
    <!-- Build ij.jar. -->
    <jar jarfile="ij.jar" basedir="build"
         manifest="MANIFEST.MF" />
  </target>


  <target name="clean" description="Delete the build files.">
    <delete dir="build" />
    <delete file="ij.jar" />
  </target>


  <target name="run" depends="build" description="Build and run ImageJ.">
    <copy file="ij.jar" toDir=".." />
    <java maxmemory="640m" jar="ij.jar" fork="yes" />
  </target>
    

  <target name="run2" depends="build" description="Build and run ImageJ.">
    <!-- Run in ImageJ directory -->
    <copy file="ij.jar" toDir=".." />
    <java maxmemory="640m" dir=".." jar="ij.jar" fork="yes" />
  </target>

  <target name="zip" depends="clean" description="Build zrc.zip.">
    <zip zipfile="../src.zip"
       basedir=".."
       includes="source/**"
    />
  </target>


  <target name="javadocs" description="Build the JavaDocs.">
    <delete dir="../api" />
    <mkdir dir="../api" />
    <javadoc 
           sourcepath="."
           packagenames="ij.*"
           destdir="../api"
           author="true"
           version="true"
           use="true"
           windowtitle="ImageJ API">
    </javadoc>
  </target>
  
  
   </project>

In ImageJ habe ich den eintrag gefunden, aber er kann nicht bearbeitet werden (Plugins->Utilities->ImageJ Properties...). Auschschnitt:
Code:
  java.home: C:\Program Files (x86)\Java\jre6
  java.class.path: C:\PROGRA~2\ImageJ\ij.jar
  java.ext.dirs: C:\Program Files (x86)\Java\jre6\lib\ext;C:\Windows\Sun\Java\lib\ext
  java.io.tmpdir: C:\Users\Felix\AppData\Local\Temp\
In einer Configdatei im Ordner kann ich nichts dazu finden.

Yuuri schrieb:
Mein Eclipse funktioniert ohne JAVA_HOME problemlos.

das liegt ja auch an dem Ant build mit der build.xml

Yuuri schrieb:
C:\Program Files\Java\jdk1.7.0_03

oder

C:\Program Files\Java\jdk1.7.0_03\bin

?
...\bin!
 
Es ist nicht Eclipse, das Probleme macht, sondern das Ant Build Skript. Wenn dort nun mal auf JAVA_HOME zugegriffen wird, muss man das entsprechend ändern, oder eben JAVA_HOME korrekt anpassen.
Ergänzung ()

Also musst Du JAVA_HOME für ImageJ ändern. Wie wird ImageJ denn gestartet? Über ein Skript? Gibt es eine Konfigurationsdatei?
 
kann ich dir nicht sagen :( ich habe es gemacht, wie es im ersten beitrag verlinkt wurde.

ich habe ImageJ deinstalliert und den kompletten ordner gelöscht. Jetzt habe ich neuinstalliert und das kompilieren geht (zumindest in ImageJ).

ich werde jetzt mal mein projekt in eclipse löschen und die anleitung nochmal neu durchmachen, vieleicht gehts dann.
hab ich gemacht und hat nicht geklappt :(

Du scheinst dich mit ImageJ auszukennen. Wie hast du das in Eclipse eingebaut?
 
Zuletzt bearbeitet:
Meinst Du mich? Ich kenne ImageJ nicht.

Was genau funktioniert in Eclipse nicht? Das Ausführen der build.xml? Welche Fehlermeldung kommt?
 
Habs nicht gesehen vielleicht überlesen.
Aber wenn ich auswendig nicht stark irre ist der JAVA_HOME path ohne bin folder. Ich habs jedenfalls so und bei mit läuft alles auch dinge wie MAVEN, ANT, ..
 
Ja, der JAVA_HOME Pfad muss auf das Installationsverzeichnis weisen. Aber das ist nicht das Problem. Seine Änderung hat ja keine Auswirkung, es wird immer noch ein JRE verwendet.
 
soares schrieb:
Meinst Du mich? Ich kenne ImageJ nicht.

Ja, dich habe ich gemeint :) Der Komplette Fehler in Ecliplse (build.xml->Run as..->Ant Build..->Run [default] (Build and run ImageJ)) lautet:
Code:
Buildfile: C:\Freigabe\Felix\Dokumente\eclipse\ImageJ\build.xml
compile:
    [javac] C:\Freigabe\Felix\Dokumente\eclipse\ImageJ\build.xml:9: warning: 'includeantruntime' was not set, defaulting to build.sysclasspath=last; set to false for repeatable builds

BUILD FAILED
C:\Freigabe\Felix\Dokumente\eclipse\ImageJ\build.xml:9: Unable to find a javac compiler;
com.sun.tools.javac.Main is not on the classpath.
Perhaps JAVA_HOME does not point to the JDK.
It is currently set to "C:\Program Files\Java\jre7"

Total time: 1 second
 
Ich habe da jetzt als Library JDK 1.7.. hinzugefügt. jetzt kann ich auch kompilieren und ImageJ wird gestartet.

nur mein plugin wird nicht ausgeführt... ich versuche nochmal methode 1 aus dem link
 
soares schrieb:
Das wird keine Auswirkung haben.

Sicher? immerhin ist da die xml anders, und der compiler/debugger wird auch über die standardbuttons gestartet, nicht über die xml

soares schrieb:
Kommt eine Fehlermeldung?

nein, kein fehler

Code:
Buildfile: C:\Users\Felix\Desktop\ij146j-src\source\build.xml
compile:
    [javac] C:\Users\Felix\Desktop\ij146j-src\source\build.xml:9: warning: 'includeantruntime' was not set, defaulting to build.sysclasspath=last; set to false for repeatable builds
build:
      [jar] Building jar: C:\Users\Felix\Desktop\ij146j-src\source\ij.jar
run:
     [copy] Copying 1 file to C:\Users\Felix\Desktop\ij146j-src
BUILD SUCCESSFUL
Total time: 16 seconds

allerdings kompiliert er mit mein TestPlugin_.java nicht, so wie ich das sehe. Statdessen macht er mir das ij,jar neu, was ich eientlich garnicht will. Außerdem benutzt er den source ordner auf dem desktop...ich hab doch alles in meinen workspace kopiert
 
Zuletzt bearbeitet:
Wir meinten nicht den gleichen Link.

In der build.xml, die Du gepostet hast, wird das plugin-Verzeichnis explizit von der Kompilierung ausgenommen. Keine Ahnung, ob das relevant ist. Deine Projekt-Struktur kenne ich nicht.

Aber entweder musst Du dieses Build-Skript anpassen. Oder ein eigenes für Dein Plugin verwenden. Wenn man denn auf Ant setzen möchte.
 
Danke für deine Hilfe soares, aber ich glaube wir kommen nichtmehr weiter.
Ich hab jetzt mal den schreiber des Tutorials angeschrieben. Gerade konnte ich mithilfe der Methode 1 in eclipse debuggen. Leider weiß ich nicht, welchen schritt ich genau machen muss um eine Änderung am Code zu übernehmen. Ich hab den Javabytecode (testhalber) gelöscht und jetzt weiß ich nichtmehr wie ich ihn bekomme. ImageJ startet sich, aber das Plugin wird nicht kopiert oder compiliert.
 
Zurück
Oben