![线程“main”中的异常 java.lang.NoClassDefFoundError: Finger](https://linux22.com/image/823553/%E7%BA%BF%E7%A8%8B%E2%80%9Cmain%E2%80%9D%E4%B8%AD%E7%9A%84%E5%BC%82%E5%B8%B8%20java.lang.NoClassDefFoundError%3A%20Finger.png)
我正在尝试使用这个手指.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.java
javac
java