导入语句Java出错

时间:2015-04-10 03:36:48

标签: java

以下是我的代码中的import语句。导入的类位于同一个包comm

package comm;
import WikiLinksReducer;
import WikiPageLinksMapper;
import XmlInputFormat;
import RankCalculateMapper;
import RankCalculateReduce;
import RankingMapper;

编译代码时出现以下错误:

WikiPageRanking.java:2: '.' expected
import WikiLinksReducer;
                   ^
WikiPageRanking.java:2: ';' expected
import WikiLinksReducer;
                    ^
WikiPageRanking.java:3: class, interface, or enum expected
import WikiPageLinksMapper;
   ^
WikiPageRanking.java:4: '.' expected
import XmlInputFormat;
                 ^
WikiPageRanking.java:4: ';' expected
import XmlInputFormat;
                  ^
WikiPageRanking.java:5: class, interface, or enum expected
import RankCalculateMapper;
   ^
WikiPageRanking.java:6: '.' expected
import RankCalculateReduce;
                      ^
WikiPageRanking.java:6: ';' expected
import RankCalculateReduce;
                       ^
WikiPageRanking.java:7: class, interface, or enum expected
import RankingMapper;

3 个答案:

答案 0 :(得分:0)

您不需要在与当前类相同的包中导入类,它们会自动导入。

答案 1 :(得分:0)

import语句用于从您的类所在的包以外的包中导入类。如果您使用的其他类在同一个包中,则无需导入包。

答案 2 :(得分:0)

我希望这可以作为一个可靠的答案!

Java软件包旨在成为一种管理文件命名和可见性的机制。

默认情况下,一个包中的类彼此之间具有“知识”,并且对于外部类中具有相同名称的类而言,它们是唯一的。程序包名称可确保命名约定仍然唯一。 Java软件包有更多细微差别,例如限制了软件包内部和软件包之间的可见性。 Oracle的详细教程不错。

作为一个简单的例子,请注意以下几点:

  1. 关键字package和package name必须是第一个语句
  2. 包名称通常通过目录结构进行镜像
  3. 默认情况下,Java将使用当前工作目录作为执行的起点。这意味着可以找到子目录。
  4. 您应在工作目录上方的目录中执行该程序,或设置CLASSPATH变量以包括您的软件包目录的路径。
  5. 每个文件(显然)都需要编译
  6. 编译后,可以在程序包目录上方的目录中运行程序,但请记住,必须添加程序包名称+“”。您的班级名称
  7. 您可以在同一包中导入类文件,但不需要

示例目录结构:

C:\java\mypackage
C:\java\mypackage\AccountBalance.java
C:\java\mypackage\Balance.java
C:\java\mypackage\Thing.java

文件:

AccountBalance.java
package mypackage;

import mypackage.Thing; // unnecessary import, NOTE : name needs to be qualified w/ package
class AccountBalance {
   public static void main(String args[]) {
      Balance balance = new Balance("Jack", 123); // SAME package --> no need to import
      balance.show();

      Thing thing = new Thing("Jill");
      System.out.println(thing.getName());
   }
}
Balance.java
package mypackage;

class Balance {
   String name;
   double balance;

   Balance (String name, double balance) {
      this.name = name;
      this.balance = balance;
   }

   void show() {
      if (balance >0) {
         System.out.print("-->");
         System.out.println(name + " : $" + balance);
      }
   }
}
Thing.java
package mypackage;

class Thing {
   String name;

   Thing(String name) {
      this.name = name;
   }

   public String getName() {
      return this.name;
   }
}

编译和执行步骤:

C:\java\mypackage> javac AccountBalance.java Balance.java Thing.java 
C:\java\mypackage> cd ..
C:\java> java mypackage.AccountBalance
执行注意事项:
  1. 可以在一行中编译多个类,并且如果多个文件之间存在相互依赖关系,则必须编译。您绝对可以将所有这些类放在同一个AccountBalance.java文件中,然后仅通过执行javac AccountBalance.java进行编译,但这会随着文件的增长而变得混乱。
  2. 运行该应用程序需要mypackage.AccountBalance来正确“命名”所有内容。从运行时的角度来看,AccountBalance不存在。 mypackage.AccountBalance.java
  3. 也没有