1

我创建了一个包:

路径:/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

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

4

2 回答 2

4

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

于 2013-08-29T14:38:22.293 回答
2

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

通常的约定是创建一个src目录来保存所有源文件,然后可以使用与您的包结构完全匹配的目录结构填充该目录。可以在此处找到有关软件包的相当不错的教程。


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

于 2013-08-29T14:40:13.877 回答