尽管类路径正确,Javac仍找不到SWT库

时间:2018-07-01 03:51:59

标签: java eclipse ant swt javac

我有一个使用SWT并完美地编译/运行的Java项目。

但是,当我尝试通过Ant进行编译时,尽管build.xml指定了正确的类路径,但javac找不到SWT库。

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 :(得分:2)

SWT为独立的Java应用程序提供了一个单独的Jar。

您可以从here下载最新的版本-查看页面底部附近的“ SWT二进制和源代码”部分。

答案 1 :(得分:1)

似乎<classpath path="C:\my_work\Eclipse\3.6-64\plugins\"></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>