Java:编译错误

时间:2013-08-29 14:36:22

标签: java

我创建了一个包:

路径:/ home / myid / py_ejb
文件:XmppMnager.java

package xmpp;

import org.jivesoftware.smack.Chat;
public class XmppManager {
}

编译

javac -d . -classpath .:smack.jar XmppManager.java

档案:XmppTest.java

import xmpp.*;

public class XmppTest {

    public static void main(String[] args) throws Exception {

        String username = "testuser1";
        String password = "testuser1pass";

        XmppManager xmppManager = new XmppManager("myserver", 5222);

..}

编译

$ javac  -classpath .:smack.jar:./xmpp XmppTest.java 
XmppTest.java:10: cannot access XmppManager
bad class file: RegularFileObject[./xmpp/XmppManager.class]
class file contains wrong class: xmpp.XmppManager
Please remove or make sure it appears in the correct subdirectory of the classpath.
        XmppManager xmppManager = new XmppManager("myserver", 5222);
        ^
1 error

我尝试了很多方法来解决这个编译问题,但它并没有消失

2 个答案:

答案 0 :(得分:4)

将源文件移动到名为xmpp的文件夹中,以便包名称与文件夹名称匹配

答案 1 :(得分:2)

包名称与类路径目录结构直接相关。 xmpp包中的所有类都必须位于名为xmpp的文件夹中,并且此文件夹必须位于类路径中。同样,如果您有一个名为xmpp.util.io的软件包,则必须将文件放在xmpp/util/io/中。

通常的惯例是创建一个src目录来保存所有源文件,然后可以使用与您的包结构完全匹配的目录结构填充它。关于包的相当不错的教程可以找到here


此外,看起来这可能只是问题中的一个拼写错误,但如果您的文件实际上名为XmppMnager.java而不是XmppManager.java,则不会编译。