Javac не может найти библиотеку SWT, несмотря на правильный путь к классу - PullRequest
0 голосов
/ 01 июля 2018

У меня есть проект Java, который использует SWT и отлично компилируется / работает.

Однако, когда я пытаюсь скомпилировать через Ant, javac не может найти библиотеку SWT, несмотря на то, что build.xml указывает правильный путь к классу.

Библиотека SWT находится в C:\my_work\Eclipse\3.6-64\plugins\. Как видно ниже (под тегами javac этот путь к классу указан как таковой.

build.xml

<?xml version="1.0" encoding="UTF-8"?>

<project default="run" name="My Project">
<target name="run" depends="compile">
    <java classname="com.company.program.project">
        <classpath path="staging\" location="C:\my_work\Eclipse\3.6-64\plugins\"/>
    </java>
</target>
<target name="compile">
    <javac includeantruntime="false" srcdir="./src" destdir="staging">
    <classpath path="C:\my_work\Eclipse\3.6-64\plugins\"></classpath>
    </javac>
</target>

<jar destfile="./build/jars/swtgui.jar" filesetmanifest="mergewithoutmain">
     <manifest>
      <attribute name="Main-Class" value="org.swtgui.MainGui" />
      <attribute name="Class-Path" value="." />
    </manifest>

    <fileset dir="./bin/com/company/program/project" includes="**/*.class" />
    <fileset dir="C:\my_work\Eclipse\3.6-64\plugins\" includes="org.eclipse.swt.win32.win32.x86_64_3.6.0.v3650b.jar" />

</jar>
<record name="./MyProject.log" loglevel="verbose" action="start"/>

Выше приведены ошибки в инструкциях импорта, такие как:

error: package org.eclipse.swt does not exist
import org.eclipse.swt.SWT;
                      ^

Почему javac не находит библиотеку SWT, когда путь к классам указан правильно?

Кроме того, как я могу узнать, где находится Javac? Журналы - даже в подробном режиме - ничего не говорят мне о том, где javac пытается найти эти операторы импорта.

Ответы [ 2 ]

0 голосов
/ 01 июля 2018

SWT предоставляет отдельный Jar для автономных приложений Java.

Вы можете скачать последнюю версию с здесь - посмотрите раздел «Двоичный и исходный код SWT» в нижней части страницы.

0 голосов
/ 01 июля 2018

похоже <classpath path="C:\my_work\Eclipse\3.6-64\plugins\"></classpath> не добавляет зависимости для компиляции classpath

у меня так работает:

<target name="compile">
    <javac includeantruntime="false" srcdir="./src" destdir="staging">
        <classpath>
            <fileset dir="C:\my_work\Eclipse\3.6-64\plugins">
                <!-- <include name="**/*.jar" /> -->
                <include name="org.eclipse.swt.*.jar" />
            </fileset>
        </classpath>
    </javac>
</target>
...