为了账号安全,请及时绑定邮箱和手机立即绑定

包与Java 9中的自动模块冲突

包与Java 9中的自动模块冲突

largeQ 2019-12-04 10:44:56
随着Java 9的临近,我认为将我的一些项目移植到Java 9将是一个很好的学习练习。在我的一个项目中,我对rxjava和rxjavafx有依赖性dependencies {    compile 'io.reactivex:rxjava:1.2.6'    compile 'io.reactivex:rxjavafx:1.0.0'    ...}我想将此项目创建为命名模块。要做到这一点,我需要创建一个module-info.java文件,我需要为指定的要求rxjava,并rxjavafx在这里。但是,这些库还没有任何模块信息。为了解决这个问题,我读到我需要创建自动模块。据我了解,我需要将rxjavaand rxjavafxjars 重命名为一个简单的名称,然后在--module-path参数中列出jars 。然后requires,我module-info.java在罐子名称中添加一个指令。module com.foo.bar {    requires rxjavafx;    requires rxjava;}我编写了gradle任务来为我编辑jar名称,在大多数情况下,它似乎可以正常工作。它需要所有需要编译的jar,并将其重命名为不包含版本信息或斜杠。然后将文件串联成一个:单独的字符串:tasks.withType(JavaCompile) {    delete { delete '/tmp/gradle' }    copy {        from configurations.compile + configurations.testCompile        into '/tmp/gradle'        rename '(.*)-[0-9]+\\..*.jar', '$1.jar'        rename { String fileName -> fileName.replace("-", "") }    }    options.compilerArgs += ['--module-path', fileTree(dir: '/tmp/gradle', include: '*.jar').getFiles().join(':')]}自然地,这些rx库共享它们的某些软件包名称...但是,这导致编译器吐出诸如以下的错误:error: module  reads package rx.subscriptions from both rxjava and rxjavafxerror: module  reads package rx.schedulers from both rxjava and rxjavafxerror: module  reads package rx.observables from both rxjava and rxjavafxerror: module rxjava reads package rx.subscriptions from both rxjavafx and rxjavaerror: module rxjava reads package rx.schedulers from both rxjavafx and rxjavaerror: module rxjava reads package rx.observables from both rxjavafx and rxjavaerror: module rxjavafx reads package rx.subscriptions from both rxjava and rxjavafxerror: module rxjavafx reads package rx.schedulers from both rxjava and rxjavafxerror: module rxjavafx reads package rx.observables from both rxjava and rxjavafx解决此问题的唯一方法似乎是将的内容重新打包rxjava并rxjavafx放入单个jar中,并将其添加为单个模块。不过,这似乎不是一个好的解决方案...所以我的问题是:我是否正确使用新的模块系统?该错误我该怎么办?和这些依赖关系是否阻止我进行更新,还是应该仅等待rx更新其库?
查看完整描述

3 回答

  • 3 回答
  • 0 关注
  • 234 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信