【问题标题】:Add .class file in Eclipse在 Eclipse 中添加 .class 文件
【发布时间】:2020-06-17 12:34:18
【问题描述】:

我知道这是一个菜鸟问题,也许您可​​以认为这是一个重复的问题,但没有一个解决方案对我有用。此外,我从 2 天开始就有这个问题。问题是,我正在尝试在 Eclipse 中的 java 中添加一个 .class 文件。这是错误:


这是项目结构

我从类文件夹中添加了文件,但它不起作用。


我还尝试以 zip 格式导入 .class 文件。它也没有工作。奇怪的是,当我自动完成导入的文本时,Eclipse 会识别它。该文件应添加到 librerias.estructurasDeDatos.deDispersion 中。我正在使用 Eclipse 2018-12 (4.10.0)。而且,我看到很多使用 Maven 的解决方案,但我没有使用它。另外,我想知道,为什么在 Package Explorer 视图中我可以看到 .java 文件而不是 .class 文件,因为我的 TablaHash.class 它已添加到项目中。任何帮助都会很好。我确信这可能是一个愚蠢的解决方案,但我看不出我做错了什么。


编辑:我已将 lib 文件夹更改为此,但它不起作用。

【问题讨论】:

  • TablaHash.class的内容是什么? java代码还是字节码?如果首先,文件应该是TablaHash.java;如果是第二个,文件应该在 Java 构建路径上(并且可能在不同的文件夹中,例如 lib 左右 - Add Class Folder...Add External Class Folder... 按钮)
  • @user85421 它是字节码。而且我已将文件夹的名称更改为lib,但它不起作用。在我的问题中,您可以看到 java 构建路径,它是添加的文件。
  • 并且您的class 文件夹需要一个librerias 文件夹,该文件夹需要一个estructurasDeDatos 和一个包含TablaHash.classdeDispersion(它必须反映包结构)。请注意,如果该类文件来自另一个项目,则添加该项目可能更容易(Projects 选项卡)
  • @user85421 如果我理解你的话,它是行不通的。我编辑了问题。
  • 添加到类路径的文件夹(例如eda/lib)必须有他librerias 文件夹 - 但整个项目很奇怪:一个ja​​va文件和一个(外部?)类文件在同一个包 (...deDispersion)

标签: java eclipse


【解决方案1】:

假设我有一个项目so.lib,其中有TablaHash.java 的源代码:

package librerias.estructurasDeDatos.deDispersion;

public class TablaHash {

    public String test() {
        return "OK, I'm here";
    }
}

在另一个项目so.test 我有一个Main 使用前一个类的类:

package so.test;

import librerias.estructurasDeDatos.deDispersion.TablaHash;


public class Main {

    public static void main(String[] args) {
        var tabla = new TablaHash();
        System.out.println(tabla.test());
    }
}

选项 1 - 在第二个项目中使用第一个项目

将第一个(库)项目添加到第二个项目设置中“项目”选项卡的类路径中。

so.test的项目结构和设置:


选项 2 - 复制类文件

将类文件目录复制到第二个项目的lib 文件夹中。将lib 文件夹添加到Libraries 选项卡中的类路径。 (我用lib,但文件夹可以是任何(有效)名称)

so.test的项目结构和设置:

注意:lib 中的文件夹结构/层次结构与类文件所在项目中的相同(与包层次结构相同):

【讨论】:

  • 选项 2 成功了!看来我必须在构建路径lib文件夹中添加,只有lib文件夹。我正在添加lib/librerias/estructurasDeDatos/deDispersion。但我想知道为什么如果我只添加“lib”文件夹它会起作用。非常感谢您的帮助@user85421
  • 因为第一个包名是libraries,java在lib中搜索那个文件夹,然后在那个文件夹里搜索第二个包名,依此类推...文件夹结构必须相同作为包结构。我在上次评论中发布的链接中更好地解释了
  • 您还可以将lib/datos/algoMas/NoSabes.class 用于包datos.algoMas 中的类(最终由TablaHash 使用)。或相同位置的任何其他包,而无需向类路径添加另一个条目
  • BTW:如果创建 JAR 文件,文件夹结构也必须与包之一匹配,即 librerias 也应该是 JAR 中的顶级文件夹
猜你喜欢
  • 2011-05-18
  • 2015-06-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-01-11
  • 1970-01-01
相关资源
最近更新 更多