Paquete 'com.example' lee paquete '' de ambos javafx.beans 'javafx.base' y 'javafx.base'

Hannes:

En module-info.javaconsigo el error

Paquete 'com.example' lee paquete '' de ambos javafx.beans 'javafx.base' y 'javafx.base'.

No sólo la migración (Java 8 a Java 11) frustrarme lenta pero segura, este error no tiene ningún sentido para mí.

Las dependencias parte fo mi build.gradle:

def springFrameworkVersion = '5.1.2.RELEASE'
def hibernateVersion = '5.3.7.Final'
def junitJupiterVersion = '5.3.1'

dependencies {
  compile 'org.transentials:cardhouse-commons:1.1.1'
  compile 'ch.qos.logback:logback-classic:1.2.3'
  compile "org.springframework:spring-context:$springFrameworkVersion"
  compile "org.springframework:spring-jdbc:$springFrameworkVersion"
  compile "org.springframework:spring-orm:$springFrameworkVersion"
  compile "org.hibernate:hibernate-core:$hibernateVersion"
  compile 'org.apache.commons:commons-dbcp2:2.5.0'
  compile 'org.apache.commons:commons-lang3:3.8.1'
  compile 'commons-io:commons-io:2.6'
  compile 'com.h2database:h2:1.4.197'
  compile 'javax.xml.bind:jaxb-api:2.3.1'
  compile 'com.google.guava:guava:27.0-jre'
  compile 'org.flywaydb:flyway-core:5.2.1'
  compile 'javax.validation:validation-api:2.0.1.Final'
  compile "org.openjfx:javafx-base:11:$platform"
  compile "org.openjfx:javafx-graphics:11:$platform"
  compile "org.openjfx:javafx-controls:11:$platform"
  compile "org.openjfx:javafx-fxml:11:$platform"
  testCompile 'junit:junit:4.12'

  testCompile 'org.mockito:mockito-core:2.+'
  testCompile 'de.saxsys:jfx-testrunner:1.2'
  testCompile 'org.apache.commons:commons-text:1.6'
  testCompile "org.junit.jupiter:junit-jupiter-api:$junitJupiterVersion"
  testCompile "org.junit.jupiter:junit-jupiter-engine:$junitJupiterVersion"
  testCompile 'org.hamcrest:hamcrest-all:1.3'
}

Y el module-info.java:

module open.terms.client.jfx {
  requires org.transentials.cardhouse.commons;
  requires com.google.common;
  requires org.apache.commons.lang3;
  requires org.hibernate.orm.core;
  requires java.persistence;
  requires slf4j.api;
  requires javafx.graphics;
  requires javafx.fxml;
  requires java.desktop;
}

¿Puede alguien explicarme lo que el compilador me quiere decir con esto?

José Pereda :

Con la lista de dependencias requerido, si se quita todos los módulos necesarios desde el module-info, el IDE todavía se quejan con el mismo error:

Módulo '' lee paquete '' de ambos javafx.beans 'javafx.base' y 'javafx.base'

Así que el problema no está en el módulo de información, pero en sus dependencias. Si usted comenta a cabo todos ellos, excepto los JavaFX, el problema se ha ido.

Esto significa que alguna dependencia está llevando a alguna dependencia JavaFX innecesaria.

Me las he arreglado para aislar el problema comentando sólo la primera dependencia:

compile 'org.transentials:cardhouse-commons:1.1.1'

Así que la pregunta es por qué sucede esto y cómo podemos solucionarlo.

Si usted va a Maven central repo se muestra el GitHub repo de la dependencia, donde se puede encontrar el build.gradlearchivo y su module-info.

Como era de esperar, se utiliza JavaFX:

compile "org.openjfx:javafx-base:11:$platform"

y también requires javafx.baseen su módulo de información .

Cuando se consumen este artefacto con sus dependencias está importando su javafx.baseimportación, junto con el suyo de sus dependencias JavaFX y no hay conflicto.

La manera más rápida de resolver el problema sólo está cambiando esto en su construcción:

compile 'org.transentials:cardhouse-commons:1.1.1'

a esto:

compile ('org.transentials:cardhouse-commons:1.1.1') {
    exclude group: 'org.openjfx'
}

por lo que excluye sus dependencias JavaFX y usará la suya.

Una solución más permanente será cambiar el artefacto org.transentials:cardhouse-commons's módulo de información a:

`requires transitive javafx.base`

Usted puede leer sobre el uso de transitive aquí .

Una cuestión debe ser comunicado al autor.

Nota

Como acotación al margen, se puede utilizar el javafxGradle plug-in para hacerse cargo de todas las partes relacionadas JavaFX de la construcción, lo que simplifica a:

plugins {
    id 'application'
    id 'org.openjfx.javafxplugin' version '0.0.5'
}

repositories {
    mavenCentral()
}

dependencies {
    compile ('org.transentials:cardhouse-commons:1.1.1') {
        exclude group: 'org.openjfx'
    }
    compile files('libs/cardhouse-commons-master-1.1.1.jar')
    ...
    compile 'javax.validation:validation-api:2.0.1.Final'
}

javafx {
    modules = [ 'javafx.controls', 'javafx.fxml' ]
}

mainClassName = 'open.terms.client.jfx.Main'

Los OpenJFX documentos ya hacen uso de este plugin.

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=184452&siteId=1
Recomendado
Clasificación