【发布时间】:2014-11-15 21:11:44
【问题描述】:
我正在尝试在 OS X 上编译 TuxGuitar(吉他指法编辑器)。我已经从 TuxGuitar 存储库中查看了代码:
svn checkout svn://svn.code.sf.net/p/tuxguitar/code/trunk tuxguitar-code
现在,当我运行 make 而它又使用 ant 时,似乎 javac 在项目源代码树中找不到 Java 包。我已将make 的完整输出放在http://people.kth.se/~albertwi/tuxg-make-error;它很大,所以我不能把它全部放在一个代码块中。
我假设这是一个半平凡的类路径问题,但我不知道如何修改构建配置。在make 输出的第 307 行及以后,出现“some_file.java 添加为 some_file.class 不存在”形式的错误/警告,我不知道这意味着什么:
[javac] org/herac/tuxguitar/app/TGMain.java added as org/herac/tuxguitar/app/TGMain.class doesn't exist.
[javac] org/herac/tuxguitar/app/TuxGuitar.java added as org/herac/tuxguitar/app/TuxGuitar.class doesn't exist.
[javac] org/herac/tuxguitar/app/action/TGActionAccessInterceptor.java added as org/herac/tuxguitar/app/action/TGActionAccessInterceptor.class doesn't exist.
...
在第 715 行及以后包含了一些类路径,但似乎并非所有必要的文件夹都被添加到此处(TuxGuitar 源代码树包含 TuxGuitar 形式的文件夹-一些程序组件/src/org/herac/tuxguitar,例如TuxGuitar-ascii/src/org 和TuxGuitar-fluidsynth/src/org,我认为应该包含在这里,但它们不是):
[javac] Compilation arguments:
[javac] '-d'
[javac] '/Users/awifstrand/src/tuxg/tuxguitar-code/TuxGuitar/build'
[javac] '-classpath'
[javac] '/Users/awifstrand/src/tuxg/tuxguitar-code/TuxGuitar/build:/Users/awifstrand/src/tuxg/tuxguitar-code/TuxGuitar:/opt/local/share/java/apache-ant/lib/ant-launcher.jar:/opt/local/share/java/apache-ant/lib/ant-antlr.jar:/opt/local/share/java/apache-ant/lib/ant-apache-bcel.jar:/opt/local/share/java/apache-ant/lib/ant-apache-bsf.jar:/opt/local/share/java/apache-ant/lib/ant-apache-log4j.jar:/opt/local/share/java/apache-ant/lib/ant-apache-oro.jar:/opt/local/share/java/apache-ant/lib/ant-apache-regexp.jar:/opt/local/share/java/apache-ant/lib/ant-apache-resolver.jar:/opt/local/share/java/apache-ant/lib/ant-apache-xalan2.jar:/opt/local/share/java/apache-ant/lib/ant-commons-logging.jar:/opt/local/share/java/apache-ant/lib/ant-commons-net.jar:/opt/local/share/java/apache-ant/lib/ant-jai.jar:/opt/local/share/java/apache-ant/lib/ant-javamail.jar:/opt/local/share/java/apache-ant/lib/ant-jdepend.jar:/opt/local/share/java/apache-ant/lib/ant-jmf.jar:/opt/local/share/java/apache-ant/lib/ant-jsch.jar:/opt/local/share/java/apache-ant/lib/ant-junit.jar:/opt/local/share/java/apache-ant/lib/ant-junit4.jar:/opt/local/share/java/apache-ant/lib/ant-netrexx.jar:/opt/local/share/java/apache-ant/lib/ant-swing.jar:/opt/local/share/java/apache-ant/lib/ant-testutil.jar:/opt/local/share/java/apache-ant/lib/ant.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_25.jdk/Contents/Home/lib/tools.jar'
[javac] '-sourcepath'
[javac] '/Users/awifstrand/src/tuxg/tuxguitar-code/TuxGuitar/src'
...
然后在第 1143 行及以后出现“package org.herac.tuxguitar.some package does not exist”错误:
[javac] /Users/awifstrand/src/tuxg/tuxguitar-code/TuxGuitar/src/org/herac/tuxguitar/app/TuxGuitar.java:27: error: package org.herac.tuxguitar.action does not exist
[javac] import org.herac.tuxguitar.action.TGActionManager;
[javac] ^
[javac] /Users/awifstrand/src/tuxg/tuxguitar-code/TuxGuitar/src/org/herac/tuxguitar/app/TuxGuitar.java:68: error: package org.herac.tuxguitar.document does not exist
[javac] import org.herac.tuxguitar.document.TGDocumentManager;
[javac] ^
[javac] /Users/awifstrand/src/tuxg/tuxguitar-code/TuxGuitar/src/org/herac/tuxguitar/app/TuxGuitar.java:69: error: package org.herac.tuxguitar.event does not exist
[javac] import org.herac.tuxguitar.event.TGEvent;
[javac] ^
...
我不太熟悉make 和ant。我如何以及在哪里进行配置更改以便javac 可以找到包?
问题是否涉及到我应该向 TuxGuitar 开发人员询问这个问题?
更新:我尝试使用 https://sourceforge.net/p/tuxguitar/discussion/522984/thread/3843b30b/#1ce9 建议的另一种编译方式,所以我转到文件夹 build-scripts/tuxguitar-macosx-cocoa-64 并运行 mvn clean package -Dnative-modules=true 但随后我收到与 SWT 相关的错误...这基本上是(http://people.kth.se/~albertwi/tuxg-mvn-error 的完整输出):
[INFO] Scanning for projects...
[ERROR] The build could not read 18 projects -> [Help 1]
[ERROR]
[ERROR] The project org.herac.tuxguitar:tuxguitar:1.3-SNAPSHOT (/Users/awifstrand/src/tuxg/tuxguitar-code/TuxGuitar/pom.xml) has 1 error
[ERROR] 'dependencies.dependency.version' for org.eclipse.swt:org.eclipse.swt:jar is missing. @ org.herac.tuxguitar:tuxguitar:[unknown-version], /Users/awifstrand/src/tuxg/tuxguitar-code/TuxGuitar/pom.xml, line 26, column 15
[ERROR]
[ERROR] The project org.herac.tuxguitar:tuxguitar-browser-ftp:1.3-SNAPSHOT (/Users/awifstrand/src/tuxg/tuxguitar-code/TuxGuitar-browser-ftp/pom.xml) has 1 error
[ERROR] 'dependencies.dependency.version' for org.eclipse.swt:org.eclipse.swt:jar is missing. @ org.herac.tuxguitar:tuxguitar-browser-ftp:[unknown-version], /Users/awifstrand/src/tuxg/tuxguitar-code/TuxGuitar-browser-ftp/pom.xml, line 35, column 15
[ERROR]
...
我在 /Library/Java/Extensions 中有最新版本 (4.4) 的 swt.jar,因此它应该位于类路径中。
【问题讨论】:
-
classPath 是否包含“.”?
-
尝试更新您的类路径以包含当前目录 (".")
-
@MadProgrammer 我遇到了同样的错误。当您说当前目录时,我假设您指的是具有 Makefile 的目录
标签: java ant makefile classpath javac