Nie można znaleźć kompilatora javac
Próbuję spakować moją aplikację internetową do pliku war za pomocą Ant.
Kiedy buduję, dostaję następujący błąd:
C:\Documents and Settings\Administrator\workspace\Assignment7\build.xml:67: 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\jre6"
Oto Moja budowa.xml
<?xml version="1.0" encoding="UTF-8"?>
<project name="Generate War" default="install" basedir=".">
<property name="build.dir" value="build"/>
<property name="dir.name" value="Assignment7"/>
<property name="package.name" value="${dir.name}.war"/>
<property name="content" value="webContent"/>
<property name="web-inf" value="${content}\WEB-INF"/>
<property name="meta-inf" value="${content}\META-INF"/>
<property name="jsp.dir.name" value="${content}"/>
<property name="lib" value="${web-inf}\lib"/>
<property name="src" value="src"/>
<property name="dest.dir" value="target"/>
<!-- Setting path to the server webapp folder -->
<property name="webapp.dir" value="C:\Program Files\Apache Software Foundation\Tomcat 6.0\webapps"/>
<!-- Using temp folder for convinence -->
<property name="temp.dir" value="temp"/>
<property name="temp.dir.web-inf" value="${temp.dir}\WEB-INF"/>
<property name="temp.dir.meta-inf" value="${temp.dir}\META-INF"/>
<property name="temp.dir.lib" value="${temp.dir.web-inf}\lib"/>
<property name="temp.dir.classes" value="${temp.dir.web-inf}\classes"/>
<!--<property name="temp.dir.classes.dir" value="${temp.dir.classes}\**"/>-->
<property name="package.file" value="${dest.dir}\${package.name}"/>
<path id="build.class.path">
<fileset dir="${lib}">
<include name="**/*.jar"/>
</fileset>
</path>
<path id="build.class.path1">
<fileset dir="C:\program files\java\jre6\lib">
<include name="**/*.jar"/>
</fileset>
</path>
<target name="clean">
<delete>
<fileset dir="${dest.dir}" includes="**/*"/>
</delete>
<delete dir="${temp.dir}"/>
<delete dir="${temp.dir.classes}"/>
<delete dir="${temp.dir.web-inf}"/>
<delete dir="${temp.dir.meta-inf}"/>
</target>
<target name="prepare" depends="clean">
<mkdir dir="${dest.dir}"/>
<mkdir dir="${temp.dir}"/>
<mkdir dir="${temp.dir.web-inf}"/>
<mkdir dir="${temp.dir.lib}"/>
<mkdir dir="${temp.dir.classes}"/>
<mkdir dir="${temp.dir.meta-inf}"/>
</target>
<target name="compile" depends="prepare">
<echo>==="complie"===</echo>
<javac srcdir="${src}" destdir="${temp.dir.classes}" debug="on">
<classpath refid="build.class.path"></classpath>
</javac>
<!--<copydir src="${build.dir}\classes" dest="${temp.dir.classes}"/>-->
</target>
<target name="package" depends="compile">
<echo>"PACKAGING THE FILES"</echo>
<copy file="${meta-inf}\MANIFEST.MF" tofile="${temp.dir.meta-inf}\MANIFEST.MF" overwrite="true"/>
<copy file="${web-inf}\web.xml" tofile="${temp.dir.web-inf}\web.xml" overwrite="true"/>
<copy file="${web-inf}\tiles.xml" tofile="${temp.dir.web-inf}\tiles.xml" overwrite="true"/>
<copy todir="${temp.dir.classes}">
<fileset dir="${src}">
<include name="**/*.xml"/>
</fileset>
</copy>
<war destfile="${package.file}" webxml="${temp.dir.web-inf}\web.xml" basedir="${temp.dir}">
<fileset dir="${jsp.dir.name}"/>
<lib dir="${lib}"></lib>
<classes dir="${temp.dir.classes}"></classes>
</war>
</target>
<target name="jsps">
<copy todir="${webapp.dir}\${dir.name}">
<fileset dir="${content}">
<include name="**/*.jsp"/>
<include name="**/*.html"/>
<include name="**/*.css"/>
<include name="**/*.gif"/>
<include name="**/*.jpg"/>
<include name="**/*.png"/>
<include name="**/*.js"/>
</fileset>
</copy>
</target>
<target name="install" depends="package">
<copy file="${package.file}" todir="${webapp.dir}" overwrite="true"/>
</target>
</project>
Jak mogę skompilować plik klasy, który nie ma głównej klasy?
Jak ustawić ścieżkę klasową?
Dla odniesienia, używam Eclipse.
7 answers
Wszystkie twoje rzeczy ant będą działać dobrze, z wyjątkiem zadania javac, które wymaga narzędzi.jar, znajdujący się w katalogu / lib z JDK, JRE nie jest w tym przypadku wystarczające. Dlatego podpowiedź od ant : "Unable to find a javac compiler;..."
Podczas pracy z Eclipse domyślne ustawienie wskazuje na Twoją instalację JRE.
Tak więc jednym z pierwszych kroków po pierwszym uruchomieniu Eclipse powinno być :Window > Preferences > Java > Installed JREs
I zmienić ustawienia z JRE na JDK.
Alternatywnie użyć :Window > Preferences > Ant > Runtime > Classpath > Global Entries
i dodaj narzędzia.jar z folderu JDK / lib
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-06-14 19:00:41
Miałem ten sam problem. W moim przypadku naprawiłem to, wskazując JAVA_HOME do folderu JDK, a nie do folderu JDK \ bin.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-01-01 13:49:53
Aktualnie Ustawiłeś JAVA_HOME na zainstalowane jre zamiast jdk. Zainstaluj bieżący JDK, a następnie Ustaw JAVA_HOME do katalogu JDK.
Aktualny jdk znajdziesz tutaj http://www.oracle.com/technetwork/java/javase/downloads/index.html
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-04-17 15:00:31
Miałem ten problem i skomentowałem https://stackoverflow.com/a/8406221/866333 mówiąc, że naprawa nie była dobra. (Właściwie to donosiło, że JAVA_HOME było czymś innym, więc zasugerowałem, że skrypt go zmienia).
W odpowiedzi stwierdzono, że kompilator nie kłamie.
Więc prawda, w końcu zauważyłem moją starą JAVA_HOME
zmienna była czymś w rodzaju JDK_v7. 0. 7, kiedy właśnie usunąłem to (z DVD przywracania 2012) i zaktualizowałem do jdk_v7. 7.1. Dlaczego warto się wycofać do JRE, Załóżmy, że to była wygoda.
Eg
JAVA_HOME = c:\Java\JDK_v7.0.7
@uruchamia skrypt...@
Być może JAVA_HOME nie wskazuje na JDK. Obecnie jest ustawiony na "C:\Program Files\Java\jre7"
@sprawdź w CMD prompt@
Więc to trochę kłamliwe, prawda?Zestaw
JAVA_HOME = c:\Java\JDK_v7.0.7
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 12:02:11
Popełniłem błąd instalując JDK i JRE w tym samym miejscu. Instalacja JDK automatycznie instaluje JRE i przypadkowo wybrałem to samo miejsce co JDK.
To spowodowało znaczne zamieszanie w eclipse.
Zainstaluj JDK i JRE w różnych lokalizacjach.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-03-22 18:01:06
To a jest częstym błędem większości początkujących,
JRE służy tylko do uruchamiania kodu/aplikacji opartych na Javie.
Jeśli chcesz skompilować kod Javy, musisz użyć JDK.
Więc otwórz zmienne środowiskowe i ustaw ścieżkę JAVA_HOME do folderu JDK zamiast JRE
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-04-10 06:56:15
Otrzymywałem ten błąd podczas próby zainstalowania narzędzia opartego na Javie, używając ant.
Moja zmienna środowiskowa $ JAVA_HOME, w ~/.bash_profile, został ustawiony na / usr/lib/jvm / java-1.8.0-openjdk-1.8.0.141-1.b16.el7_3x86_64 / jre
Poprzez usunięcie jre, (Przejście o jeden poziom katalogu w górę), wykonanie $JAVA_HOME, / usr / lib / jvm / java-1.8.0-openjdk-1.8.0.141-1.b16.el7_3x86_64/, Naprawiono problem dla mnie.
Nie zapomnij uruchomić, źródło ~/.bash_profile, po dokonaniu zmiany ! HTH
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-09-06 06:37:02