底漆:
下周我将在 UCSD 开始一个 Java 课程,我们的教科书让我们下载一个名为objectdraw.jar的库,我们将在前两章中使用它。我下载了库并将其放在java_libraries
我的~/home/dev/
目录中名为的文件夹中。
我正在尝试在 Linux 上运行我的 Java 程序,但当我尝试运行它时出现错误。它编译得很好,但不运行。
为了编译,我从我的TouchyWindow.java
文件所在的目录发出以下命令~/dev/java/
:
javac -classpath ../java_libraries/objectdraw.jar TouchyWindow.java
注意:它编译时没有错误或警告。
要运行该程序,我从我的TouchWindow.class
文件所在的目录发出以下命令~/dev/java/
:
java -classpath ../java_libraries/objectdraw.jar TouchyWindow
当我尝试执行程序时,出现以下错误:
Exception in thread "main" java.lang.NoClassDefFoundError: /home/fhaddad78/dev/java/TouchyWindow
Caused by: java.lang.ClassNotFoundException: .home.fhaddad78.dev.java.TouchyWindow
at java.net...
at java.security...
at java.net...
at java.lang...
at sun.misc...
at java.lang...
Could not find the main class: /home/fhaddad78/dev/java/TouchyWindow. Program will exit.
关于我的系统:
我正在使用 Iceatea Java SDK 在 Gentoo Linux 上执行此操作。我提到这一点是因为我不确定这是否会导致问题。
我是 Java 新手,不太确定这意味着什么,因为它找不到的文件位于它说找不到它的路径中。
更新 为了帮助说明程序,我将通过源代码,因为它只有几行。
// TouchyWindow.java
import objectdraw.*;
import java.awt.*;
public class TouchyWindow extends WindowController {
public void onMousePress(Location point) {
new Text("I'm Touched", 40, 50, canvas);
}
public void onMouseRelease(Location point) {
canvas.clear();
}
}
objectdraw.jar 库文件处理我的源文件中可能缺少的任何内容。
更新 出于好奇,我启动了 Windows,安装了 Java SDK 和 Eclipse。创建了一个新项目,使用与上面相同的代码,并且所有编译和工作都没有任何问题。这对问题的可能指导有帮助吗?
关于 objectdraw.jar 的更新
这可能是我的问题吗?
以下内容来自教科书的网站。
将 objectdraw 用于应用程序而不是 applet 有一种简单的方法可以将 objectdraw 用于应用程序,该方法是 objectdraw 库 1.1 版和更高版本中新增的。在这些版本的 objectdraw 下,您可以使用名为 startController 的新方法将 WindowController(或 Controller)的扩展作为应用程序运行。此方法包含在 Controller 类中(因此由 WindowController 继承)。
要将本来是 applet 的程序转变为可以作为应用程序运行的程序,只需将以下方法添加到扩展 Controller 或 WindowController 的类中:
public static void main(String[] args) { new MyClassName().startController(400,400); }
在上面,MyClassName 是扩展 Controller 的类名称的占位符,而参数 (400,400) 指定所需的窗口大小。