【问题标题】:Add a new class to an existing JAR File(which contains source code)将新类添加到现有 JAR 文件(包含源代码)
【发布时间】:2013-07-23 18:19:55
【问题描述】:

我会尽量简单地说明问题。

我有一个使用 Winrar 提取的 JAR 文件。 (jar 文件包含一个开源的 android 库)。
我想通过向库中添加一个新类来修改这个 JAR 文件。

以下是我的步骤:
首先,我使用 Eclipse 创建了一个类,并将包名设置为与 android 的库包名相同。
其次,我将此java文件复制到库中其他java文件的文件夹中。
第三,我尝试使用 javac 通过 CMD 编译 JAVA 文件。

新的 java 文件和库的其他 .JAVA 和 .CLASS 文件的路径是:C:\com\example\core\
新 java 文件的名称为:"MyNewClass.java"
我通过 CMD 运行的命令是:javac C:\com\example\core\MyNewClass.java

但是,在编译过程中,我收到很多错误提示:找不到符号。

我一直在寻找这个问题的解决方案,但不知道如何解决它并使新的 JAR 文件具有我单独创建的另一个类。

我错过了什么?

【问题讨论】:

  • 如果您使用 JAR 资源管理器,您只需将 .class 文件拖放到其中即可。确保包路径存在并匹配它在你的类中声明的方式。
  • 如果您使用的是开源库,为什么不获取源代码,添加您的修改并重新编译整个 shebang?这似乎比使用编译代码和各种工具更容易维护。
  • @idish:你问我如何获取一个你没有提到名字的库的源代码?我没有头绪。您声称它是开源的,这意味着源代码应该在某处可用。如果不是,则它不是一个开源库。
  • @MH。我想它是一个开源库。 github.com/nostra13/Android-Universal-Image-Loader
  • @MH。请参阅下载部分,有多个下载源。但是如果我提取 JAR 文件,我会得到 .JAVA + .CLASS 文件,我不知道如何从这里继续。

标签: java android jar compilation javac


【解决方案1】:

根据之前的 cmets:

您可以通过使用 git 克隆存储库或点击链接页面右侧的“下载 ZIP”来访问 Universal Image Loader 库的完整源代码,而不是尝试修改 JAR。

获得源代码后,将库导入 IDE。从那里开始,您将能够从头开始构建整个东西,进行任何您喜欢的调整/修改等。

【讨论】:

  • 很高兴能帮上忙!
【解决方案2】:

您的类路径可能有误,或者包名可能有错误。

在编译 Java 程序时,编译器会创建一个所有正在使用的标识符的列表。如果找不到标识符所指的内容,则无法完成编译。这就是找不到符号错误消息的意思,它没有足够的信息来拼凑 Java 代码想要执行的内容。

【讨论】:

    【解决方案3】:

    试试:

    javac -cp com/* C:\com\example\core\MyNewClass.java
    

    这应该让编译器知道 com/... 下的所有其他类

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-11-16
      • 2011-06-07
      • 1970-01-01
      • 1970-01-01
      • 2021-11-23
      • 2012-04-08
      • 1970-01-01
      • 2015-08-16
      相关资源
      最近更新 更多