&引用;应为类、接口或枚举。”;编译java文件时出错
首先,问题代码:&引用;应为类、接口或枚举。”;编译java文件时出错,java,Java,首先,问题代码: package net.foo.server; import at; import ay; import bi; import bj; import bl; import ck; import cw; import da; import dp; import ds; import dt; import dw; import ep; import fa; import fd; import fi; import fl; import ge; import ho; import
package net.foo.server;
import at;
import ay;
import bi;
import bj;
import bl;
import ck;
import cw;
import da;
import dp;
import ds;
import dt;
import dw;
import ep;
import fa;
import fd;
import fi;
import fl;
import ge;
import ho;
import ht;
import java.awt.GraphicsEnvironment;
import java.io.File;
import java.io.IOException;
import java.io.PrintStream;
import java.net.InetAddress;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Set;
import java.util.logging.Level;
import java.util.logging.Logger;
net\foo\server\fooServer.java:8: '.' expected
import at;
^
net\foo\server\fooServer.java:8: ';' expected
import at;
^
net\foo\server\fooServer.java:9: class, interface, or enum expected
import ay;
^
net\foo\server\fooServer.java:10: '.' expected
import bi;
^
net\foo\server\fooServer.java:10: ';' expected
import bi;
^
net\foo\server\fooServer.java:11: class, interface, or enum expected
import bj;
^
net\foo\server\fooServer.java:12: '.' expected
import bl;
^
net\foo\server\fooServer.java:12: ';' expected
import bl;
^
net\foo\server\fooServer.java:13: class, interface, or enum expected
import ck;
^
net\foo\server\fooServer.java:14: '.' expected
import cw;
^
net\foo\server\fooServer.java:14: ';' expected
import cw;
^
net\foo\server\fooServer.java:15: class, interface, or enum expected
import da;
^
net\foo\server\fooServer.java:16: '.' expected
import dp;
^
net\foo\server\fooServer.java:16: ';' expected
import dp;
^
net\foo\server\fooServer.java:17: class, interface, or enum expected
import ds;
^
net\foo\server\fooServer.java:18: '.' expected
import dt;
^
net\foo\server\fooServer.java:18: ';' expected
import dt;
^
net\foo\server\fooServer.java:19: class, interface, or enum expected
import dw;
^
net\foo\server\fooServer.java:20: '.' expected
import ep;
^
net\foo\server\fooServer.java:20: ';' expected
import ep;
^
net\foo\server\fooServer.java:21: class, interface, or enum expected
import fa;
^
net\foo\server\fooServer.java:22: '.' expected
import fd;
^
net\foo\server\fooServer.java:22: ';' expected
import fd;
^
net\foo\server\fooServer.java:23: class, interface, or enum expected
import fi;
^
net\foo\server\fooServer.java:24: '.' expected
import fl;
^
net\foo\server\fooServer.java:24: ';' expected
import fl;
^
net\foo\server\fooServer.java:25: class, interface, or enum expected
import ge;
^
net\foo\server\fooServer.java:26: '.' expected
import ho;
^
net\foo\server\fooServer.java:26: ';' expected
import ho;
^
net\foo\server\fooServer.java:27: class, interface, or enum expected
import ht;
^
30 errors
接下来,错误:
package net.foo.server;
import at;
import ay;
import bi;
import bj;
import bl;
import ck;
import cw;
import da;
import dp;
import ds;
import dt;
import dw;
import ep;
import fa;
import fd;
import fi;
import fl;
import ge;
import ho;
import ht;
import java.awt.GraphicsEnvironment;
import java.io.File;
import java.io.IOException;
import java.io.PrintStream;
import java.net.InetAddress;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Set;
import java.util.logging.Level;
import java.util.logging.Logger;
net\foo\server\fooServer.java:8: '.' expected
import at;
^
net\foo\server\fooServer.java:8: ';' expected
import at;
^
net\foo\server\fooServer.java:9: class, interface, or enum expected
import ay;
^
net\foo\server\fooServer.java:10: '.' expected
import bi;
^
net\foo\server\fooServer.java:10: ';' expected
import bi;
^
net\foo\server\fooServer.java:11: class, interface, or enum expected
import bj;
^
net\foo\server\fooServer.java:12: '.' expected
import bl;
^
net\foo\server\fooServer.java:12: ';' expected
import bl;
^
net\foo\server\fooServer.java:13: class, interface, or enum expected
import ck;
^
net\foo\server\fooServer.java:14: '.' expected
import cw;
^
net\foo\server\fooServer.java:14: ';' expected
import cw;
^
net\foo\server\fooServer.java:15: class, interface, or enum expected
import da;
^
net\foo\server\fooServer.java:16: '.' expected
import dp;
^
net\foo\server\fooServer.java:16: ';' expected
import dp;
^
net\foo\server\fooServer.java:17: class, interface, or enum expected
import ds;
^
net\foo\server\fooServer.java:18: '.' expected
import dt;
^
net\foo\server\fooServer.java:18: ';' expected
import dt;
^
net\foo\server\fooServer.java:19: class, interface, or enum expected
import dw;
^
net\foo\server\fooServer.java:20: '.' expected
import ep;
^
net\foo\server\fooServer.java:20: ';' expected
import ep;
^
net\foo\server\fooServer.java:21: class, interface, or enum expected
import fa;
^
net\foo\server\fooServer.java:22: '.' expected
import fd;
^
net\foo\server\fooServer.java:22: ';' expected
import fd;
^
net\foo\server\fooServer.java:23: class, interface, or enum expected
import fi;
^
net\foo\server\fooServer.java:24: '.' expected
import fl;
^
net\foo\server\fooServer.java:24: ';' expected
import fl;
^
net\foo\server\fooServer.java:25: class, interface, or enum expected
import ge;
^
net\foo\server\fooServer.java:26: '.' expected
import ho;
^
net\foo\server\fooServer.java:26: ';' expected
import ho;
^
net\foo\server\fooServer.java:27: class, interface, or enum expected
import ht;
^
30 errors
我已经确保CLASSPATH变量包含目录。有人有线索吗?(注意:编译器只是在我的类上遇到了问题。对于初学者来说,您正在将一大堆类导入到一个
.java
文件中,该文件没有声明任何内容。这就是类、接口或枚举所需的消息的内容
在所有这些导入之后,您将声明一个类(或接口或枚举),如下所示:
package net.foo.server;
/*
* import statements
*/
public class MyClass {
// fields, methods, etc. here
}
您要导入的随机命名的两个字母的包是什么?您不能像这样导入类,除非它们是该类所在包之外的包的一部分。如果这些类在包之外,您必须显式导入它们或使用*通配符同时导入它们。使用导入语句导入类型。没有以编写代码的方式导入包的概念
您可以使用星形符号导入包中的每种类型,例如
import at.*;
但是您不能只导入包“at”。这是您看到的所有编译器问题的根源
我还想进一步指出,完全不带任何层次结构的两个字母的包名与Java中公认的命名和组织惯例背道而驰
我建议您更加熟悉语言约定。之所以使用这些约定,是因为它们使您和其他想阅读您的代码的人都能更轻松地阅读代码。有两种可能:
1) 将您的服务器类与其他所有类移到同一个包中,并摆脱导入。您还需要重新编译所有其他类,当然还需要更改子类中的net.foo.server导入
2) 不要为net.foo.server包操心,在其他地方进行更改,如gy.java等。只编译所需的类并将它们添加到jar中。在构建时,请确保将类路径指向server.jar,而不是编译的源代码
3) 使用旧的JDK编译——如果代码支持的话。在较旧的JDK中,可以使用“import Unfinished”从默认包导入
4) 等待并祈祷。(最流行的方法)记住,你所做的任何事情都很可能在你最不经意的周五中断。是at
(etc)是类名还是包名?我假设它们是未命名包中的类,而不是包(导入时间为。*)。我认为从一家未命名的包装店进口东西有一些限制。您可以创建一个不声明任何内容的.java文件。(我总是为javadoc创建一个包-info.java-它不声明任何东西。)Emory是正确的,这些是子包之外的类,直接在类路径中。我确实在导入之后声明了一个类,我只是觉得没有必要在这里包含它。这些不是包。它们是不在子包中的类,直接在类路径中。好吧,除了违反Java命名原则(类型是驼峰大小写的)之外,您不能从默认包(默认包没有名称)导入类型,这就是您所描述的。同样,您还必须遵守一个限制,即导入语句必须以一个包开始,并最终引用类型,可以是显式的,也可以是星形表示法。显然,我的代码很混乱,因为它是我正在处理的一个个人项目。我的问题与命名原则无关,我对命名原则非常了解。只要看到foo这个词和随机字母,我就会陷入困惑。至于层次结构,让我澄清一下我的包是如何设置的。类路径=。;C:\footest\。;此代码导入的类位于C:\footest\中。此文件位于C:\footest\net\foo\server\中。我从我的一位同事那里收到了一个几乎相同的类,该类使用了完全相同的包结构,并且编译成功。@Nathangbson:很简单:您来自一个命名包中的.java文件。据我所知,这是Java语言的一个限制,所以通过模糊处理或其他字节码操作,您应该能够实现这种效果。