0

我有两个班级Pair.java,主程序Users.java在哪里。Users.java这两个 java 文件都在 package 下userdetails

在unix中,我使用命令编译它

javac -d . -classpath avro-1.7.5.jar:lib/*:jackson-core-asl-1.9.13.jar:lib/* Pair.java Users.java

该类位于文件夹 userdetails 下。我尝试使用命令运行

java  -classpath avro-1.7.5.jar:lib/*:jackson-core-asl-1.9.13.jar:lib/* userdetails.Users

我收到错误

找不到主类 userdetails.Users

请帮助我。

源代码 :-

import java.io.File; 
import java.io.IOException; 
import org.apache.avro.file.DataFileReader; 
import org.apache.avro.file.DataFileWriter; 
import org.apache.avro.io.DatumReader; 
import org.apache.avro.io.DatumWriter; 
import org.apache.avro.specific.SpecificDatumReader; 
import org.apache.avro.specific.SpecificDatumWriter; 
import org.apache.avro.util.Utf8;
public class Users {
 public void createUser() {
            userdetails.Pair datum = new userdetails.Pair(new Utf8("L"), new Utf8("R"));
            DatumWriter writer = new SpecificDatumWriter();
            DataFileWriter fileWriter = new DataFileWriter(writer);



            try {
                    fileWriter.create(datum.getSchema(), new File("users.avro"));
                    fileWriter.append(datum);
                    System.out.println(datum);
                    fileWriter.close();
            } catch (Exception e) {
                    // TODO Auto-generated catch block
                    System.out.println("ERROR");
                    e.printStackTrace();
            }         }

    public static void main(String[] args) {
            Users user = new Users();
            user.createUser();
    }
}
4

2 回答 2

2

当您指定一个类路径时,当前工作目录不再自动包含,因此您必须将其添加到类路径中:

java  -classpath avro-1.7.5.jar:lib/*:jackson-core-asl-1.9.13.jar:lib/*:. userdetails.Users
于 2013-11-14T10:11:47.497 回答
0

你说这两个类都在包“userdetails”下,但是在你的源代码的开头没有包声明。两者都Pair.java应该User.java从以下行开始:

package userdetails;

查看Java 包教程

于 2013-11-14T10:20:09.203 回答