【问题标题】:Use reference libraries in Eclipse for Java在 Eclipse for Java 中使用参考库
【发布时间】:2021-04-12 14:33:36
【问题描述】:

首先,我明确表示我在这个论坛和其他论坛上找到了这个主题,但是这些论坛上给出的解决方案都没有对我有用。

我在 Ubuntu 上使用 Eclipse,我正在尝试为我的 java 项目导入一些 .jar,但我无法使其工作,这是问题的屏幕:

正如您在屏幕右上角看到的,okhttp.jar 已添加到构建路径中,并且两个导入语句(通过按“ctrl + shift + o”生成)正确地遵循出现在包在左侧的探索。

我也尝试过不使用eclipse(将okhttp.jar和类放在同一个文件夹中并使用javac -cp okhttp.jar Oracle.java编译文件),但即使它编译,当我尝试执行@时也会出现此错误987654324@:

Exception in thread "main" java.lang.NoClassDefFoundError: com/squareup/okhttp/OkHttpClient
    at Oracle.<clinit>(Oracle.java:20)
Caused by: java.lang.ClassNotFoundException: com.squareup.okhttp.OkHttpClient
    at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:602)
    at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178)
    at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:522)
    ... 1 more

有人知道是什么导致了这个问题吗?

【问题讨论】:

    标签: java eclipse import jar


    【解决方案1】:

    我看到您已将其添加为作为模块,但我不确定这是否正确。不是每个 jar 都是一个模块。将其添加为简单的 jane 依赖项 - 采用拼图的库并不多。它应该出现在“类路径”部分。右键单击库将其删除,然后再次右键单击并添加它,这次是作为类路径依赖项,而不是作为模块。

    我也尝试过不使用 Eclipse(将 okhttp.jar 和类放在同一文件夹中并使用 javac -cp okhttp.jar Oracle.java 编译文件),但即使编译,我也会收到此错误当我尝试执行 java Oracle

    不同的问题。

    你有 2 个“世界”。编译时间和运行时间。

    对于“正常”依赖项,您需要在这两种情况下都可用javac,而您在 Eclipse 中的整个“会话”通常算作“编译时间”,但 java MyApp 算作运行时间。

    因此:

    java -cp okhttp.jar:. Oracle
    

    有效(在 Windows 上使用 ; 而不是 :) - 您还需要指定 okhttp 在运行时位于类路径中。 Oracle.class 包含 JUST 位于您的 Oracle.java 文件的 public class Oracle {} 部分中的代码,而不是其他任何内容。它是一个中间产品,而不是一个准备好运行“只需单击它”的可执行文件。

    【讨论】:

    • 非常感谢,第二个选项效果很好,但是 eclipse 的解决方案并不完全有效。即使现在eclipse接受尝试编译程序,com.squareup.okhttp oar的引用仍然标记为错误,编译给我一个未解决的编译问题
    猜你喜欢
    • 1970-01-01
    • 2016-06-17
    • 2011-03-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多