2013-07-06 65 views
1

我无法用javac编译文件。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.*; 

这是由编译器发现没有任何问题。

如果我评论导出的问题(org.objectweb.asm.attrs。*), 该文件编译成功。我还应该注意到Eclipse编译器成功编译了这个文件。

回答

0

您可能需要sourcepath不是classpath

+0

'的javac -sourcepath “C:\用户\我\下载\ ASM-4.1-BIN \ ASM-4.1的\ src” wDump.java'给了相同的结果 – zaz

+0

还有什么在src目录 –

+0

它包含了ASM 4.1来源。目录结构是'src \ org \ objectweb \ asm'文件夹'asm'包含​​文件夹attrs,commons,optimizer,signature,tree,util,xml – zaz

0

使用以下命令:

javac \ 
-sourcepath src \ 
-your_jar_path/your.jar:. \ 
your_class_path/your.java \ 
-d classes 
+0

'src'代表源文件夹的完整路径吗?另外,你是否希望'your_class_path'前面加上'cp'? – zaz

+0

请点击此链接并查看页面底部https://github.com/coolaj86/json-examples/tree/master/java/jackson –

+0

这不起作用 – zaz

0

如果您的代码编译注释掉import线的时候,那么你并不需要它,可以将其删除。

如果您想使用它,请检查attrs是否为正确的软件包名称,因为看起来import org.objectweb.asm.*;正在工作。并检查attrs是否是有效的包,并且该文件夹实际上存在于asm文件夹内。您还可以检查attrs文件夹中是否存在班级文件。

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

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

+0

该导入是由我正在使用的工具自动生成的( ASMifier)。由于我需要编译多个文件,因此我不希望每次都评论一下。 – zaz

+0

我刚刚从OW2网页下载了asm-4.1-bin.zip文件:src。zip包含在asm zip中,包含一个'attrs'文件夹,但里面没有其他内容:它不是一个包。检查'src'目录中'attrs'文件夹的内容。 – eternay

+0

尝试使用'asm' zip文件的'lib/all'文件夹中包含的'asm-all-4.1.jar'编译你的代码。在这个jar文件中,'attrs'文件夹不存在,可能该工具不会为该包生成'import'。除非您想修改它们,否则不要使用外部来源编译您的代码。 – eternay