2015-05-12 2 views
3

У меня есть пакет исходного кода Java, который, как известно, успешно компилируется. Я пытаюсь скомпилировать пакет с ant (файл build.xml присутствует). Когда я бегу муравей все операторы импорта Java генерирует сообщение об ошибке типа:компиляция исходного кода java с ant

java.awt.geom.Path2D импорт не может быть решена»(конкретное сообщение, зависит от того, что импортируется)

Очевидно, что пути пакета не определены, и я понятия не имею, где запрошенные импорты живут в файловой системе. Я предполагаю, что если я знаю пути, которые устанавливают $CLASSPATH, программа будет скомпилирована. Я использую opensuse 13.2 и установленную java информация:

java -version 
openjdk version "1.8.0_45" 
OpenJDK Runtime Environment (build 1.8.0_45-b14) 
OpenJDK 64-Bit Server VM (build 25.45-b02, mixed mode) 

Может ли кто-нибудь указать мне, где найти пакеты java и как получить муравья для компиляции источников?

Командная строка используется для компиляции источников: муравей

build.xml находится в том же каталоге, что муравей запускается из которых также содержит каталог Src. Это рабочий проект, я просто не знаю, как настроить стандартные расположения библиотек (я не являюсь Java-типом любым способом).

Обновление.

Я нашел путь к библиотекам openjdk в /usr/lib64/jvm/java-1.8.0-openjdk-1.8.0/jre/lib/rt.jar и попытался скомпилировать 2 разных способа, но все же получить импорт не удается разрешить сообщения об ошибках.

Компиляция с -lib вариант не работает:

муравей -lib /usr/lib64/jvm/java-1.8.0-openjdk-1.8.0/jre/lib/rt.jar

Установка переменной CLASSPATH среды не работает:

экспорт CLASSPATH =/USR/lib64/JVM/Java-1.8.0-OpenJDK-1.8.0/JRE/Библиотека/rt.jar

муравей

Содержимое build.xml:

<?xml version="1.0"?> 
 
<project name="MazR" default="jar" basedir="."> 
 
    <property name="jar.file" value="${ant.project.name}.jar"/> 
 
    <property name="src.dir" value="src"/> 
 
    <property name="build.dir" value="build"/> 
 
    <property name="dist.dir" value="dist"/> 
 
    <property name="applet.html" value="applet.html"/> 
 

 
    <taskdef resource="checkstyletask.properties"/> 
 

 
    <target name="init"> 
 
    <mkdir dir="${build.dir}"/> 
 
    <mkdir dir="${dist.dir}"/> 
 
    </target> 
 

 
    <target name="compile" depends="init"> 
 
    <javac srcdir="${src.dir}" destdir="${build.dir}" debug="on" 
 
      includeantruntime="false"> 
 
     <compilerarg value="-Xlint"/> 
 
    </javac> 
 
    </target> 
 

 
    <target name="jar" depends="compile"> 
 
    <jar destfile="${dist.dir}/${jar.file}" basedir="${build.dir}"> 
 
     <manifest> 
 
     <attribute name="Main-Class" value="com.nullprogram.maze.RunMaze"/> 
 
     </manifest> 
 
    </jar> 
 
    <copy file="${applet.html}" tofile="${dist.dir}/index.html"/> 
 
    </target> 
 

 
    <target name="run" depends="jar"> 
 
    <java jar="${dist.dir}/${jar.file}" fork="true"/> 
 
    </target> 
 

 
    <target name="clean"> 
 
    <delete dir="${build.dir}"/> 
 
    <delete file="${jar.file}"/> 
 
    </target> 
 

 
    <target name="check"> 
 
    <checkstyle config="checkstyle.xml"> 
 
     <fileset dir="src" includes="**/*.java"/> 
 
    </checkstyle> 
 
    </target> 
 

 
    <target name="format" description="Run the indenter on all source files."> 
 
    <apply executable="astyle"> 
 
     <arg value="--mode=java"/> 
 
     <arg value="--suffix=none"/> 
 
     <fileset dir="${src.dir}" includes="**/*.java"/> 
 
    </apply> 
 
    </target> 
 

 
    <target name="applet" depends="jar" description="Run the applet version."> 
 
    <exec executable="appletviewer"> 
 
     <arg value="${dist.dir}/index.html"/> 
 
    </exec> 
 
    </target> 
 

 
    <target name="javadoc" description="Generate Javadoc HTML."> 
 
    <javadoc destdir="${dist.dir}/javadoc"> 
 
     <fileset dir="${src.dir}" includes="**/*.java" /> 
 
    </javadoc> 
 
    </target> 
 
</project>

Любая идея, почему импорт, кажется, не работает?

Спасибо!

Дальнейшее обновление.

Я добавил определение classpath в build.xml, как показано ниже, но без радости. Я не использовал Java в течение многих-многих лет, поэтому я вышел из своей глубины, помогая отчаянно оценивать.

<property name="java.class.path" location="/usr/lib64/jvm/java-1.8.0-openjdk-1.8.0/jre/lib/rt.jar"/> 
 

 
    <target name="compile" depends="init"> 
 
    <javac srcdir="${src.dir}" destdir="${build.dir}" debug="on" 
 
      includeantruntime="false"> 
 
     <compilerarg value="-Xlint"/> 
 
     <classpath> 
 
     <pathelement path="${java.class.path}/"/> 
 
     </classpath> 
 
    </javac> 
 
    </target>

+0

может быть установлен $ JAVA_HOME? – ZhongYu

+0

Если вы используете Eclipse, попробуйте следующее: http://stackoverflow.com/questions/16918959/import-cannot-be-resolved или вместо этого взгляните на это: http://stackoverflow.com/questions/16664591/ the-import-package-не может быть разрешен – bphilipnyc

+0

Просьба показать муравьиную задачу, специфичную для компиляции (javac), используемой вами. Также см. Документацию [javac ant documentation] (https://ant.apache.org/manual/Tasks/javac.html) и обратите внимание, что у вас есть 3 варианта верхнего класса, которые обеспечивают путь к классам: 1. атрибут classpath 2. вложенный элемент 3 в classpath. classpathref атрибут – YoYo

ответ

0

Может быть, что ваши JAVAC и ява символьные ссылки указывают на различные места

Сравните эти две команды и посмотреть, если они указывают на примерно том же районе:

which javac 
which java 
+0

Спасибо Trevor, который сообщает javac/usr/bin/javac, который сообщает java/usr/bin/java. Глядя глубже, realpath/usr/bin/javac reports /usr/bin/gcj-4.8, realpath/usr/bin/java reports /usr/lib64/jvm/java-1.8.0-openjdk-1.8.0/jre/bin /Ява. Таким образом, у меня есть компилятор GCC Java и OpenJDK JRE, вероятно, не очень хороший. При проверке менеджера пакетов инструменты разработки OpenJDK не установлены. Я установлю средства разработки OpenJDK и отчитаюсь. Благодаря! –

Смежные вопросы