Pergunta

A razão é longo e chato, mas eu preciso para executar um script Ant para compilar Java 1.5 código de um 1.4 aplicativo Java. Recebo este erro, no entanto:

BUILD FAILED

build.xml:16: 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:\j2sdk1.4.2_16\jre"

No meu código, eu tenho:

Project p = new Project();
p.setUserProperty("ant.file", buildFile.getAbsolutePath());
p.setProperty("java.home", "C:\Program Files\Java\jdk1.6.0_04");
p.fireBuildStarted();
p.init();
// so on and so forth

mas ignora-lo. Eu também tentei p.setUserProperty (String, String), mas isso não faz o truque, qualquer um. Existe uma maneira de fazer isso sem lançar um processo separado?

Foi útil?

Solução

Será que a tarefa javac em sua buildfile tem fork="yes"? Se não, então não importa o que a propriedade java.home está definido como; formiga tentará chamar o método javac Main no mesmo processo java, que a partir de seu erro é um JRE, não um JDK.

Editar Tentar definir a propriedade executable de sua tarefa javac para o caminho completo para o binário javac e adicionar compiler="extJavac" para a tarefa.

Outras dicas

não deve as barras invertidas ser duplicada?

p.setProperty("java.home", "C:\\Program Files\\Java\\jdk1.6.0_04");

Você já definir o ambiente de variáveis ??JAVA_HOME e ANT_HOME corretamente? Se você estiver configurando através do código que deve funcionar embora.

Além disso, verifique se a sua% JAVA_HOME% \ bin% ANT_HOME% \ bin deve estar na variável de ambiente 'caminho'.

Seu problema parece ser com o% JAVA_HOME% \ bin não estar presente na EnvT. caminho variável embora.

Outra maneira de fazer este trabalho é adicionar 'tools.jar' para o seu classpath. O compilador javac está contido dentro deste frasco.

java -cp $ JAVA_HOME / lib / tools.jar ...

opção javac está disponível em tools.jar. No eclipse, mesmo se seus JRE PRINCIPAL aponta para um jdk, todas as bibliotecas do sistema apontam para JDK_HOME \ jre \ lib. Não há tools.jar. Você pode adicionar tools.jar como um arquivo JAR externo. Isto deve resolver o problema

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top