2

我在使用 javac 编译文件时遇到问题。

我的编译命令是:

C:\Work>javac -classpath "%CLASSPATH%;C:\Users\Me\Downloads\asm-4.1-bin\asm-4.1\src" wDump.java

结果是:

wDump.java:3: error: package org.objectweb.asm.attrs does not exist
import org.objectweb.asm.attrs.*;
^
1 error

该软件包肯定存在。它与所有其他 ASM 导入位于同一目录树中。attrs 是一个包含单个 HTML 文档的空包。

wDump.java 文件还包含

import org.objectweb.asm.*;

编译器发现它没有任何问题。

如果我注释问题 import out(org.objectweb.asm.attrs.*),则文件编译成功。我还应该注意到 Eclipse 编译器成功地编译了这个文件。

4

3 回答 3

0

你可能sourcepath不需要classpath

于 2013-07-06T04:58:29.077 回答
0

如果您的代码在注释掉该import行时正在编译,那么您不需要它并且可以将其删除。

如果您想使用它,请检查attrs该包的名称是否正确,因为它似乎import org.objectweb.asm.*;可以正常工作。并检查它attrs实际上是一个包,并且该文件夹实际上存在于asm文件夹内。您还可以检查文件夹中是否存在类文件attrs

源 zip 中的attrs文件夹asm仅包含一个 html 页面,其中没有任何类。尝试删除此文件夹(如果不确定,可以将其保存在其他目录中)并imports通过该ASMifier工具再次生成。如果文件夹不存在,可能该工具不会自动生成导入。

为了您的信息,您不应该使用外部源代码来编译您的代码,除非您正在修改这些外部源。改用添加到类路径的 jar 文件来编译代码。在 asm-all-4.1 jar 文件中,没有 attrs 文件夹。

于 2013-07-06T06:00:27.340 回答
0

使用以下内容:

javac \
-sourcepath src \
-your_jar_path/your.jar:. \
your_class_path/your.java \
-d classes
于 2013-07-06T05:08:32.213 回答