文件可以编译,但不会运行
File can be compiled, but won't run
我可以通过使用命令 javac -cp "path\to\lib\file.jar" FileName.java
将文件指向它使用的库文件夹来编译文件,但是当我尝试使用 java FileName
运行 它时,我收到以下堆栈跟踪:
java SecureFileSample
Error: A JNI error has occurred, please check your installation and try again
Exception in thread "main" java.lang.NoClassDefFoundError: com/voltage/securedata/enterprise/VeException
at java.lang.Class.getDeclaredMethods0(Native Method)
at java.lang.Class.privateGetDeclaredMethods(Class.java:2701)
at java.lang.Class.privateGetMethodRecursive(Class.java:3048)
at java.lang.Class.getMethod0(Class.java:3018)
at java.lang.Class.getMethod(Class.java:1784)
at sun.launcher.LauncherHelper.validateMainClass(LauncherHelper.java:544)
at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:526)
Caused by: java.lang.ClassNotFoundException: com.voltage.securedata.enterprise.VeException
at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:349)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
... 7 more
这意味着在我解决这个问题之前,该软件无法使用或与其他软件集成(在此处添加它是因为 Stack Overflow 以某种方式认为“可以编译但不会 运行 不清楚足够”作为描述)。预期的行为是 class 到 运行 (执行它给出的指令)但是常规命令,比如 java FileName
将不起作用。
我用谷歌搜索了一下,我找到的唯一答案(与主 class 中的构建器相关)与我的构建器的情况完全匹配。
此文件中没有包声明。
您可以使用 java
命令提供相同的 class 路径(大概包含 VeException
class)。另外(为了从评论中捕捉讨论)不要忘记添加包含已编译的目录 class:
java -cp "path\to\lib\file.jar;path\to\lib\" SecureFileSample
我可以通过使用命令 javac -cp "path\to\lib\file.jar" FileName.java
将文件指向它使用的库文件夹来编译文件,但是当我尝试使用 java FileName
运行 它时,我收到以下堆栈跟踪:
java SecureFileSample
Error: A JNI error has occurred, please check your installation and try again
Exception in thread "main" java.lang.NoClassDefFoundError: com/voltage/securedata/enterprise/VeException
at java.lang.Class.getDeclaredMethods0(Native Method)
at java.lang.Class.privateGetDeclaredMethods(Class.java:2701)
at java.lang.Class.privateGetMethodRecursive(Class.java:3048)
at java.lang.Class.getMethod0(Class.java:3018)
at java.lang.Class.getMethod(Class.java:1784)
at sun.launcher.LauncherHelper.validateMainClass(LauncherHelper.java:544)
at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:526)
Caused by: java.lang.ClassNotFoundException: com.voltage.securedata.enterprise.VeException
at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:349)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
... 7 more
这意味着在我解决这个问题之前,该软件无法使用或与其他软件集成(在此处添加它是因为 Stack Overflow 以某种方式认为“可以编译但不会 运行 不清楚足够”作为描述)。预期的行为是 class 到 运行 (执行它给出的指令)但是常规命令,比如 java FileName
将不起作用。
我用谷歌搜索了一下,我找到的唯一答案(与主 class 中的构建器相关)与我的构建器的情况完全匹配。
此文件中没有包声明。
您可以使用 java
命令提供相同的 class 路径(大概包含 VeException
class)。另外(为了从评论中捕捉讨论)不要忘记添加包含已编译的目录 class:
java -cp "path\to\lib\file.jar;path\to\lib\" SecureFileSample