自定义java包不起作用

时间:2012-11-30 08:47:11

标签: java packages

我正在尝试创建一个自定义包来放置我的一些类,但当我尝试将其导入我的一个程序时,它说它无法找到。

这是我正在尝试编译的文件,但它说无法找到包

import project_euler.Fibonacci;

public class test {
    public static void main(String[] args) {
        Fibonacci fib = new Fibonacci();
        System.out.println(fib.getTerm(10));
    }
}

这是Fibonacci类

package project_euler;
public class Fibonacci {
    public int getTerm(int n) {
        if (n < 0 || n > 46) {
            throw new IllegalArgumentException();
        } else {
            return (n > 1) ? getTerm(n-1) + getTerm(n-2) : n;
        }
    }
}

这是我尝试编译时遇到的错误

test.java:1: error: package project_euler does not exist
import project_euler.Fibonacci;
                ^
test.java:6: error: cannot access Fibonacci
            Fibonacci fib = new Fibonacci();
            ^
bad source file: C:\Users\dhout_000\Documents\Project Euler\project_euler\Fibonacci.java
file does not contain class Fibonacci
Please remove or make sure it appears in the correct subdirectory of the sourcepath.
2 errors

我的目录设置为

> My Documents
    > Project Euler
        - test.java
        > project_euler
            - Fibonacci.class
            - Fibonacci.java

我似乎无法弄清楚问题是什么

1 个答案:

答案 0 :(得分:1)

确保您没有设置CLASSPATH环境变量。

从包层次结构的基目录编译并运行代码。

C:\My Documents\Project Euler> javac project_euler\Fibonacci\*.java

C:\My Documents\Project Euler> java project_euler.Fibonacci.test

您还可以使用-cpjavac命令的java选项显式指定类路径。确保包含包层次结构(C:\My Documents\Project Euler)的基目录。您可以通过在.中指定C:\My Documents\Project Euler(当前目录)来执行此操作:

C:\My Documents\Project Euler> javac -cp . project_euler\Fibonacci\*.java

C:\My Documents\Project Euler> java -cp . project_euler.Fibonacci.test

注意:根据常见的Java命名约定,您不应在名称(包,类,方法名称)中使用下划线,包名称应为小写,类名称应以大写字母开头。将包重命名为projecteuler.fibonacci(您还需要重命名文件夹),并将班级test重命名为Test