xjar icon indicating copy to clipboard operation
xjar copied to clipboard

XBoot.encrypt 方法执行完之后springboot 依赖的lib下面的jar并没有什么变化 ,而且新生成的jar springboot启动不了了

Open 845999248 opened this issue 6 years ago • 31 comments

错误: 找不到或无法加载主类 io.xjar.boot.XBootLauncher

845999248 avatar Jan 23 '19 07:01 845999248

能粘贴上加密的代码吗

core-lib avatar Jan 23 '19 07:01 core-lib

image

845999248 avatar Jan 23 '19 07:01 845999248

Video-1.0-SNAPSHOT.jar是我springboot 子模块的jar

845999248 avatar Jan 23 '19 07:01 845999248

image

845999248 avatar Jan 23 '19 07:01 845999248

是我使用方式不对还是咱们项目中代码的问题?需要你帮我确定一下

845999248 avatar Jan 23 '19 07:01 845999248

图片看不到

core-lib avatar Jan 23 '19 07:01 core-lib

public static void main(String[] args) {

    try {

        XBoot.encrypt("/Users/dapeng/IdeaProjects/backend/Application/target/Application-1.0-SNAPSHOT.jar",
                "/Users/dapeng/IdeaProjects/backend/Application/target/test.jar",
                "123",
                new XJarAntEntryFilter("BOOT-INF/lib/Video-1.0-SNAPSHOT.jar"));

    } catch (Exception e) {
        e.printStackTrace();
    }


}

845999248 avatar Jan 23 '19 07:01 845999248

我这图片能显示啊,我用的chrom

845999248 avatar Jan 23 '19 07:01 845999248

你用的版本是多少

core-lib avatar Jan 23 '19 07:01 core-lib

Google Chrome 版本 71.0.3578.98

springboot 1.5.9.RELEASE

845999248 avatar Jan 23 '19 07:01 845999248

XJar 的版本

core-lib avatar Jan 23 '19 07:01 core-lib

com.github.core-lib xjar v1.1.0

<groupId>com.github.core-lib</groupId> <artifactId>xjar-maven-plugin</artifactId> v1.0.6

845999248 avatar Jan 23 '19 07:01 845999248

我测试下

core-lib avatar Jan 23 '19 08:01 core-lib

好的

845999248 avatar Jan 23 '19 08:01 845999248

你更新到 v1.1.1

core-lib avatar Jan 23 '19 08:01 core-lib

好的,我试试

845999248 avatar Jan 23 '19 08:01 845999248

可以了,这种直接运行单独的程序方式可以对springboot+jpa加密打包 ,问题#4 是用插件打的,有好的办法解决吗

845999248 avatar Jan 23 '19 09:01 845999248

JPA的问题和XJar的使用方式无关,用插件打包其内部实际上也是调用 XBoot 来加密。 JPA的问题是它自己去解析 Spring 的 FatJar 所以只能修改它的源码来适配加密后的Spring FatJar

core-lib avatar Jan 23 '19 09:01 core-lib

如果你用上面的代码加密没问题 那用最新的插件也是没问题 你试下更新插件到1.0.7

core-lib avatar Jan 23 '19 09:01 core-lib

好的,如果JPA的问题没有好的解决方式,那我是不是可以在maven打包之后 执行一下那个单独加密方法,在pom里面是可以执行脚本的吧?

845999248 avatar Jan 23 '19 09:01 845999248

你确定你的项目用了 JPA 吗? 如果用了JPA应该是无法加密启动才对的。

core-lib avatar Jan 23 '19 09:01 core-lib

我确实用了jpa,成功生成xjar了,但是启动的时候 while setting constructor argument; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entityManagerFactory' defined in class path resource [org/springframework/boot/autoconfigure/orm/jpa/HibernateJpaAutoConfiguration.class]: Invocation of init method failed; nested exception is org.hibernate.boot.archive.spi.ArchiveException: Could not build ClassFile

845999248 avatar Jan 23 '19 09:01 845999248

嗯嗯 那这样的确是成功加密了 只是JPA无法解析加密后的class,目前可能的解决办法就是我提供一个改过源码的JPA包

core-lib avatar Jan 23 '19 09:01 core-lib

非常感谢您能及时修复问题 ,并且及时回答我的疑惑

845999248 avatar Jan 24 '19 02:01 845999248

必须的

core-lib avatar Jan 24 '19 02:01 core-lib

我找到了不修改JPA源码的方式支持 JPA 你要不要试下

core-lib avatar Jan 25 '19 07:01 core-lib

你已经提交新的版本了吗?关于jpa这个问题

845999248 avatar Jan 26 '19 06:01 845999248

image 采用 JVMTI 的方式来实现

core-lib avatar Jan 26 '19 06:01 core-lib

你看下 README 中间关于这个问题的描述,我也是昨天才上传这个问题的解决方案,我测试没有问题,应该对你也是通用的,你可以测试下。

core-lib avatar Jan 26 '19 06:01 core-lib

我简单测试了一下 启动没问题

845999248 avatar Jan 26 '19 08:01 845999248