java 多个第三方jar包冲突解决方案

        最近公司在接入腾讯的ysdk(上班以来接第三方sdk最艰难的一次),在这简单说一下哈,就是他们的逻辑太复杂(我觉得有点乱),ysdk和msdk到最后才搞清楚,因为最初是接入他们的msdk,接着接着让换ysdk,接就接呗,又不是没接过,根据他们的文档就开始接,接着接着就遇到问题了,jar包冲突,这是第一个问题,先暂且不说,然后是第二个问题他们的so库放到我们的项目中就被压缩变小的很多,所以就报错,弄了好几天,最后得出的结论是strip优化导致的,那么问题来了,怎么解决呢,因为我们的项目就没有用到ndk编译so,那就是android studio 在编译运行的时候,做了strip优化,那怎么解决,解决不了啊,找同事找老大,也没办法,最后换了另外一个同事的电脑,他的是ubantu,我和我同学的都是macbookpro,结果在他的电脑上运行就是正常的,好吧,几天都没解决的问题,换了台电脑就好了,可是我该怎么办,用他的电脑,不可能,他还要工作,公司又没电脑了,只有一个macmini主机,是用来搭服务器用的,所以我每次要测试,都要先提交代码到服务器,然后连接macmini主机,然后在macmini上拉去代码,然后用命令行编译打包,然后把打好的包,从macmini上用命令行远程copy到自己的电脑上,然后安装到自己的手机上看,我想说的是,不能debug,每次想测一下,都要经过这么复杂的程序,哎。第三个问题是接ysdk根本就不是我们所想的那样,本来我以为是在我们的应用中接入,其实根本不是,是要新申请一个新的应用,新的包名,这个时候,我就真的要崩溃了,好吧,大不了重新接。

      现在又要接ali的移动推送,原来我们用的是jpush,但是大米和华为手机老是收不到,最后决定换,在接阿里的移动推送的时候又遇到了jar包冲突。

      怎么解决,当然是把冲突的类删了,删了会不会影响原先的功能,我删了后测了下,阿里支付和阿里反馈都没影响,那就删,怎么删,解压,然后再压缩,我也以为这样是对的,可是发现把jar包放到应用中编译不通过,怎么办,重新压缩的jar包有问题,我压缩的方式很简单,直接用电脑的压缩工具压缩的,然后改成.jar,很显然这样不行,正确的姿势是解压完后,使用jar -cvf alipay.jar '.'这个命令就可以了,打出来的jar包就没问题了。

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java中,我们可以通过引入第三方JAR包来使用第三方库中的功能。要执行命令,我们可以使用Java中的`ProcessBuilder`类来创建一个新的进程,并在该进程中执行命令。 首先,我们需要将第三方JAR包添加到Java项目的构建路径中。这可以通过将JAR文件复制到项目的`lib`目录下,并在IDE中将其添加到构建路径中实现。 然后,我们需要使用`ProcessBuilder`类创建一个新的进程,并在该进程中执行命令。我们可以通过调用`start()`方法来启动这个新进程。 下面是一个简单的示例代码,展示了如何引入第三方JAR包并执行命令: ```java import java.io.IOException; public class ExecuteCommand { public static void main(String[] args) { try { // 创建ProcessBuilder对象,并将第三方JAR包的名称和要执行的命令作为参数 ProcessBuilder pb = new ProcessBuilder("java", "-jar", "third-party.jar", "command"); // 设置进程的工作目录(可选) pb.directory(new File("path/to/working/directory")); // 启动新进程 Process process = pb.start(); // 等待进程执行完毕并获取返回值 int exitCode = process.waitFor(); // 检查进程是否执行成功 if (exitCode == 0) { System.out.println("命令执行成功"); } else { System.out.println("命令执行失败"); } } catch (IOException | InterruptedException e) { System.out.println("命令执行发生异常: " + e.getMessage()); } } } ``` 在上面的代码中,我们使用`ProcessBuilder`类创建一个新的进程,并将第三方JAR包的名称和要执行的命令作为参数传递给这个进程。然后,我们可以通过调用`start()`方法来启动这个新进程,并使用`waitFor()`方法等待进程执行完毕并获取返回值。最后,我们可以根据返回值来判断命令是否执行成功。 需要注意的是,我们可以使用`directory()`方法设置进程的工作目录,这对于某些命令可能是必需的。 希望以上解答对您有所帮助!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值