gpt4 book ai didi

Java从终端运行问题

转载 作者:行者123 更新时间:2023-12-01 10:36:00 25 4
gpt4 key购买 nike

我正在使用安装了 Ubuntu 的云虚拟机。安装的Java版本是:

java version "1.8.0_66"
Java(TM) SE Runtime Environment (build 1.8.0_66-b17)
Java HotSpot(TM) 64-Bit Server VM (build 25.66-b17, mixed mode)

我从未使用过终端来编译和运行程序。不过,该程序可以使用 Eclipse 运行。

编译 java 程序时必须使用两个 jar:disco-2.1.jarsqlite-jdbc-3.8.11.2.jar。我使用的终端命令是:

javac -cp '/home/ubuntu/workspace/sem/*' USem.java

使用 /home/ubuntu/workspace/sem/* 将 disco 和 sqlite jar 添加到类路径中。

这会在 sem 目录中创建我的 USem.class 文件,没有错误。这些 jar 包含在 sem 目录中。

USem.java 包含这部分代码,从头开始:

import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.sql.*;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

import org.apache.lucene.index.CorruptIndexException;

import de.linguatools.disco.CorruptConfigFileException;
import de.linguatools.disco.DISCO;
import de.linguatools.disco.TextSimilarity;
import de.linguatools.disco.DISCO.SimilarityMeasure;

public class USem {

//irrelevant code here

public static void main(String[] args) throws IOException, CorruptConfigFileException, SQLException{

当我在终端中运行此命令时,问题就开始了:

java USem

终端显示:

Error: A JNI error has occurred, please check your installation and try again Exception in thread "main" java.lang.NoClassDefFoundError: de/linguatools/disco/CorruptConfigFileException 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: de.linguatools.disco.CorruptConfigFileException at java.net.URLClassLoader.findClass(URLClassLoader.java:381) at java.lang.ClassLoader.loadClass(ClassLoader.java:424) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331) at java.lang.ClassLoader.loadClass(ClassLoader.java:357) ... 7 more

我认为 disco-2.1.jar 有问题。我检查了其中包含的 jar 类,一切正常。

我的工作区是这样组织的:

home/ubuntu/workspace/sem

sem 目录中,我有我的 .java 文件,并在其中添加了 .jar 文件。

我做错了什么?我尝试卸载 JDK 并重新安装它,更改运行命令的终端文件夹,但没有任何改变。

--更新--

现在我写了

java -cp '/home/ubuntu/workspace/sem/*' USem

但是,我得到了

Error: Could not find or load main class USem

最佳答案

在执行 java 命令时将 Disco jar(或任何其他所需的 jar)添加到类路径

java -cp "Whatever.jar"my.package.MainClass

关于Java从终端运行问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34731751/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com