6

也许有人可以帮助我。
如何生成类似于位于 android sdk-platform 中的 android.jar 的 jar 库。它应该删除所有方法实现并将其替换为throw new RuntimeException("Stub!");

AppWidgetManager() { throw new RuntimeException("Stub!"); }
public NdefMessage(NdefRecord[] records) { throw new RuntimeException("Stub!"); } 
public NdefRecord[] getRecords() { throw new RuntimeException("Stub!"); } 

所有公众成员也都在场。

4

2 回答 2

2

一个简单的 javassist 解决方案(我没有测试,但大致应该是这样的):

ClassPool pool = new ClassPool();
pool.appendClassPath("pathToYourJar");
CtClass clazz = pool.get("Your class");

CtMethod throwingMethod = CtMethod.make("throw new RuntimeException();",clazz);

for(CtMethod method : clazz.getDeclaredMethods()){
    method.setBody(throwingMethod,null);
}

clazz.writeFile("pathToYourNewClassDirectory");



//zip the classes in your new class directory into a jar,
// add a manifest if you need to, deploy to where you want it
于 2013-06-13T14:37:41.957 回答
2

如果没有其他人给出解决方案,这是一个非常简单的案例。

最简单的可能是使用 java 的反射,从 jar 中读取所有类并生成 java 源代码。

Amd 还有像 ASM 这样的库;字节码操作以及 java dom 源代码生成库。

于 2013-06-13T09:39:01.300 回答