如何让javac使用.jar的类?

时间:2013-05-22 16:50:28

标签: java bash compilation

我正在学习(填写)AP计算机科学考试。其中一个要求是需要熟悉一个名为“GridWorld”的程序。在我的学习中,我一直在使用终端而不是IDE来运行和编译我的代码。在一个目录中,有一个名为BugRunner.java的程序必须编译。这些类位于名为gridworld.jar的.jar文件中。 Gridworld.jar位于一个单独的目录中。如何配置javac编译器以使用这些类?我使用带有bash shell的Mac。我试着打字

javac -cp .:/Users/raidenworley/programming/java/apcomp/GridWorldCode/projects/firstProject/gridworld.jar BugRunner.java

进入终端,但我收到以下内容:

BugRunner.java:17: package info.gridworld.actor does not exist
import info.gridworld.actor.ActorWorld;
                           ^
BugRunner.java:18: package info.gridworld.actor does not exist
import info.gridworld.actor.Bug;
                           ^
BugRunner.java:19: package info.gridworld.actor does not exist
import info.gridworld.actor.Rock;
                           ^
BugRunner.java:33: cannot find symbol
symbol  : class ActorWorld
location: class BugRunner
        ActorWorld world = new ActorWorld();
        ^
BugRunner.java:33: cannot find symbol
symbol  : class ActorWorld
location: class BugRunner
        ActorWorld world = new ActorWorld();
                               ^
BugRunner.java:34: cannot find symbol
symbol  : class Bug
location: class BugRunner
        world.add(new Bug());
                      ^
BugRunner.java:35: cannot find symbol
symbol  : class Rock
location: class BugRunner
        world.add(new Rock());
                      ^
7 errors

2 个答案:

答案 0 :(得分:2)

你是指你的-cp中的jar,因为我没有看到它。

您可以通过导出类路径来完成此操作。

看看这里

adding classpath in linux

正如您所提到的,您指的是包含java文件而不是jar的路径。

您应该能够在不调用物理jar的情况下引用包含jar的文件夹。我只是说这是为了确保它可用。无论如何,如果你想要出口类路径的高级方法。有用的fir auotmated cron调用等读取了这个Can I export a variable to the environment from a bash script without sourcing it?

答案 1 :(得分:0)

我设法解决了这个问题。我输入了终端:

 javac -cp .:../../gridworld.jar BugRunner.java

然后使用

运行它
java -cp .:../../gridworld.jar BugRunner

我不明白出了什么问题,或者为什么会这样。