我创建了一个包:
路径:/ 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
我尝试了很多方法来解决这个编译问题,但它并没有消失
答案 0 :(得分:4)
将源文件移动到名为xmpp
的文件夹中,以便包名称与文件夹名称匹配
答案 1 :(得分:2)
包名称与类路径目录结构直接相关。 xmpp
包中的所有类都必须位于名为xmpp
的文件夹中,并且此文件夹必须位于类路径中。同样,如果您有一个名为xmpp.util.io
的软件包,则必须将文件放在xmpp/util/io/
中。
通常的惯例是创建一个src
目录来保存所有源文件,然后可以使用与您的包结构完全匹配的目录结构填充它。关于包的相当不错的教程可以找到here。
此外,看起来这可能只是问题中的一个拼写错误,但如果您的文件实际上名为XmppMnager.java
而不是XmppManager.java
,则不会编译。