首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在包中更改类的规范名称

在包中更改类的规范名称
EN

Stack Overflow用户
提问于 2015-05-08 20:48:37
回答 1查看 220关注 0票数 0

有一点背景(因为我的问题很笼统):我想使用库来解析包含媒体内容的RSS提要。但是罗马不支持开箱即用的媒体,所以我想使用一个媒体插件,它作为一个单独的罐子,建立在原始库的基础上。

所以我有两个JAR(我没有源代码),我的gradle依赖关系如下所示:

代码语言:javascript
复制
dependencies {
  compile files('libs/android-rome-feed-reader-1.0.0.jar')
  compile files('libs/mediarss-0.2.3.jar')
}

问题是,Android版本罗马的包名都以com.google.code.rome.android.repackaged.作为原始库的前缀。

例如,Android罗马库包含以下接口:

代码语言:javascript
复制
package com.google.code.rome.android.repackaged.com.sun.syndication.feed.module;
public interface Module { /* ... */ }

当媒体插件中的所有类都引用原始规范名称时:

代码语言:javascript
复制
public interface MediaModule extends com.sun.syndication.feed.module.Module { /* ... */ }

很自然,编译失败了:

代码语言:javascript
复制
Error:(69, 34) error: cannot access Module
class file for com.sun.syndication.feed.module.Module not found

有办法解决这个问题吗?我是否可以静态地更改库中所有类的规范名称?还是有其他的解决办法?

谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-05-08 21:10:59

哈,那是个愚蠢的问题。以前见过这样的东西。你最简单的选择是:Jar链接

简单:

  • 使用以下内容在与rules.txt相同的目录中创建一个jarjar.jar:
  • rule com.google.rome.** com.foo.bar.@1
  • jarjar.jar的cd到te目录
  • 运行java -jar jarjar.jar rules.txt ~/path_to/old_jar ~/path_to/new_jar

应该重新包装一切让你不傻。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30132627

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档