【问题标题】:Javac cannot find SWT library despite correct classpath尽管类路径正确,Javac 仍找不到 SWT 库
【发布时间】:2018-12-09 17:48:18
【问题描述】:

我有一个使用 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 试图在哪里找到这些 import 语句。

【问题讨论】:

    标签: java eclipse ant swt javac


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

      似乎&lt;classpath path="C:\my_work\Eclipse\3.6-64\plugins\"&gt;&lt;/classpath&gt; 没有添加依赖项来编译类路径

      这种方式对我有用:

      <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>
      

      【讨论】:

      • 您的更改有效,但运行目标现在不执行。 jar 文件也没有被创建。我是否需要做类似的事情才能让它发挥作用?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-07-30
      • 1970-01-01
      • 2014-09-20
      • 2023-04-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多