gpt4 book ai didi

Java程序在eclipse中执行但不在终端中执行

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

我正在使用带有 Eclipse Maven 插件 (m2e) 的 Eclipse。

我的java程序可以从eclipse界面正确编译和运行,但我无法从终端编译和运行它。

我的 Eclipse 设置:

我正在使用两个第三方 API,我在 eclipse 构建路径中添加了这些 API

  1. “/home/syed/workspace/FirstMaven/target/resources/fuse-jna-master/build/classes”(作为外部类文件夹)
  2. “/home/syed/workspace/FirstMaven/target/resources/apache-jena-2.11.1/lib”(作为外部 jar)

封装:

package org.organization.upesh.FirstMaven;

我的项目路径:

syed@ubuntu:~/workspace/FirstMaven$  

源代码目录路径:

syed@ubuntu:~/workspace/FirstMaven/src/main/java/org/organization/upesh/FirstMaven$

类(class)目录:

syed@ubuntu:~/workspace/FirstMaven/target/classes/org/organization/upesh/FirstMaven$ 

当我尝试通过以下命令执行 myProgram 时

syed@ubuntu:~/workspace/FirstMaven/target/classes$ java org.organization.upesh.FirstMaven.myProgram

它给了我这些错误:

Exception in thread "main" java.lang.NoClassDefFoundError: net/fusejna/util/FuseFilesystemAdapterFull
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:800)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:449)
at java.net.URLClassLoader.access$100(URLClassLoader.java:71)
at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:482)
Caused by: java.lang.ClassNotFoundException: net.fusejna.util.FuseFilesystemAdapterFull
at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
... 13 more

但是我的测试程序不使用第三方API,可以通过以下方式正确运行:

syed@ubuntu:~/workspace/FirstMaven/target/classes$ java org.organization.upesh.FirstMaven.test

我认为 myProgram 没有执行,因为我使用了两个 API(类文件夹和 jar 文件夹)。

我已将 API 的类和 jar 文件夹的路径添加到/etc/environment(如下所示)并休息了我的计算机,但仍然出现相同的错误

PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/home/syed/workspace/FirstMaven/target/resources/apache-jena-2.11.1/lib:/home/syed/workspace/FirstMaven/target/resources/fuse-jna-master/build/classes"

请指导我如何正确运行我的程序

最佳答案

JVM 无法从 PATH 获取库。它使用特殊的环境变量 CLASSPATH,该变量可以包含目录或 jar 文件列表,在 Unix 上用冒号分隔,在 Windows 上用分号分隔。

因此,只需定义 CLASSPATH 并在其中放置对所有库的引用即可。

或者(恕我直言,更好)在运行 java 时使用命令行开关 -classpath (或其别名 -cp):

java -cp mylib1.jar:mylib2.jar com.mycompany.Main

关于Java程序在eclipse中执行但不在终端中执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24474903/

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