Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/351.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Proguard不';t查看嵌入式jar以查找引用_Java_Osgi_Proguard - Fatal编程技术网

Java Proguard不';t查看嵌入式jar以查找引用

Java Proguard不';t查看嵌入式jar以查找引用,java,osgi,proguard,Java,Osgi,Proguard,我正试图混淆proguard与bundle之间的关系。由于特定于项目的原因,my Bundle中包含库JAR,例如: bundle.jar | |-META-INF | |-library.jar | \-org (and the rest of my source tree) META-INF中的Manifest.mf文件包括以下行: Bundle-ClassPath: .,library.jar 这些都是自动生成的,很好 现在,当proguard试图混

我正试图混淆proguard与bundle之间的关系。由于特定于项目的原因,my Bundle中包含库JAR,例如:

bundle.jar
   |
   |-META-INF
   |
   |-library.jar
   |
   \-org (and the rest of my source tree)
META-INF中的Manifest.mf文件包括以下行:

Bundle-ClassPath: .,library.jar
这些都是自动生成的,很好

现在,当proguard试图混淆library.jar中的方法时,问题来了(假设我有很好的理由这么做)。在这些情况下,它找不到library.jar,因为它不是依赖库的一部分,而proguard似乎忽略了清单文件中的Bundle类路径条目

所以,问题是:这能做到吗?或者proguard完全不知道osgi,根本无法处理这些标签?有没有办法向proguard提供jar内依赖关系


谢谢

为什么不在与Proguard混淆之后,而不是之前,用其嵌入的JAR组装捆绑包?

是的,Proguard完全不知道OSGi。它有意独立于任何平台

此外,ProGuard可以处理类文件,可以选择在JAR内部,也可以选择在WAR内部,可以选择在EAR内部,也可以选择在ZIP内部,但不能处理JAR内部的类文件

美国联邦法规。ProGuard手册>用法>类路径。

如果使用bnd(maven、bndtools等),则可以展开jar文件。使用以下说明:

 Include-Resource: @library.jar

在这种情况下,您会得到一个普通的JAR,它也可以在类路径上使用。这应该不会给混淆器带来任何问题。如果要从此库导出包,请使用-exportcontents而不是export-Package,它们都有相同的语法。

不幸的是,我需要在jar级别进行混淆。我有一大堆不同的捆绑包,它们之间相互依赖……这并不能解释为什么在将
library.jar
放入
bundle.jar
之前不能混淆它……我明白了!好的,你是对的,这确实是可行的。不过,这不是最简单的设置。我最终选择在父jar中解包jar的类,并一次性混淆所有的类。到目前为止,我所做的是使用依赖项:解包依赖项来解包jar中的主题…@NeilBartlett的解决方案是严格正确的,Eric Lafortune的解决方案限制了可能的解决方案。我最终选择在我的目标jar中解包jar,因为这对我来说并没有什么影响。谢谢大家!谢谢这就澄清了问题!