线程“main”中的异常 java.lang.NoClassDefFoundError: Finger

线程“main”中的异常 java.lang.NoClassDefFoundError: Finger

我正在尝试使用这个手指.java对于我的 Android 项目,但是我收到此错误。

$java Finger [email protected]
Exception in thread "main" java.lang.NoClassDefFoundError: Finger
Caused by: java.lang.ClassNotFoundException: Finger
    at java.net.URLClassLoader$1.run(URLClassLoader.java:217)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:205)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:321)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:294)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:266)
Could not find the main class: Finger. Program will exit.

我在 Google 上查找过然后尝试了这个:

java -classpath .finger

和...

set classpath=%classpath%:.Finger.java:

但这不起作用:(

我从此页面获取 Java 文件:http://elm.eeng.dcu.ie/~ee402/ee402notes/html/ch10s03.html#FingerScreenGrab

我只需要从我的项目的“mainActivity”调用它。

我的 Java 设置如下:

$java -version
java version "1.6.0_24"
OpenJDK Runtime Environment (IcedTea6 1.11.3) (6b24-1.11.3-1ubuntu0.12.04.1)
OpenJDK Server VM (build 20.0-b12, mixed mode)

$javac -version
javac 1.7.0_07

答案1

正如评论中所讨论的......

Finger.java是 Java 源代码文件。.java源代码文件不能以这种形式运行;必须先进行编译。

正如您所解释的,Finger.java旨在提供可用作部分Java 程序,以及被设计为一个独立的应用程序运行。

要在另一个程序中使用文件中定义的类.java,必须对其进行编译,但这通常不需要分离构建整个程序的构建步骤。通常,当您构建程序时,.java其源代码中的所有文件都会被编译。Eclipse 等集成开发环境可确保实现这一点,但您也可以从命令行执行此操作。

如何是否执行此操作取决于你是否使用自动构建系统(例如蚂蚁或者顺便说一下)。如果您不使用自动构建系统,您仍然可以通过一次调用命令从命令行进行构建javac;您的实现手册页javac详细说明了如何(运行man javac)。由于这不是您问题的重点,因此我不会在这里详细介绍如何从多个源代码文件构建 Java 应用程序。

由于任何源.java代码文件需要先编译才能运行,并且想要Finger作为独立程序运行,您必须先编译它:

javac Finger.java

然后你就可以运行它:

java Finger

这实际上是运行上面详细说明的编译创建的名为 的文件。该命令Finger.class无法执行Java 源代码。Finger.javajavacjava

相关内容