optimizely / optimizely/java-sdk
[BUG] Required dependency missing: org.json:json
Nadie ha tomado este issue todavía.
- Lenguaje dominante
- Java
- Estrellas
- 44
- Forks
- 32
- Merge medio
- 8 h 39 min
- PR fusionados (30 d)
- 1
Descripción
Is there an existing issue for this?
- I have searched the existing issues
SDK Version
<dependency>
<groupId>com.optimizely.ab</groupId>
<artifactId>core-api</artifactId>
<version>4.1.1</version>
</dependency>
Current Behavior
Using JsonConfigParser leads to runtime exception, because it requires org.json.JsonObject from org.json:json which is not provided as an implementation dependency.
JsonConfigParser https://github.com/optimizely/java-sdk/blob/master/core-api/src/main/java/com/optimizely/ab/config/parser/JsonConfigParser.java
Dependency excluded here: https://github.com/optimizely/java-sdk/blob/master/core-api/build.gradle#L11
Expected Behavior
Users of your library should be able to use JsonConfigParser without knowing about its internal dependencies.
Steps To Reproduce
Create a Project with
pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<artifactId>repro</artifactId>
<groupId>repro</groupId>
<version>1.0.0</version>
<dependencies>
<dependency>
<groupId>com.optimizely.ab</groupId>
<artifactId>core-api</artifactId>
<version>4.1.1</version>
</dependency>
</dependencies>
</project>
and settings.xml
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0
https://maven.apache.org/xsd/settings-1.0.0.xsd">
</settings>
and src/main/java/Main.java
import com.optimizely.ab.config.parser.ConfigParseException;
import com.optimizely.ab.config.parser.JsonConfigParser;
public class Main {
public static void main(String[] args) {
System.out.println("Hello, World!");
JsonConfigParser parser = new JsonConfigParser();
try {
parser.parseProjectConfig("{}");
} catch (ConfigParseException e) {
e.printStackTrace();
}
}
}
% mvn clean compile
% mvn exec:java -Dexec.mainClass=Main
Java Version
% mvn -version
Apache Maven 3.9.9 (8e8579a9e76f7d015ee5ec7bfcdc97d260186937)
Maven home: /usr/local/Cellar/maven/3.9.9/libexec
Java version: 11.0.22, vendor: Amazon.com Inc.
Link
No response
Logs
No response
Severity
No response
Workaround/Solution
Solution
Change https://github.com/optimizely/java-sdk/blob/master/core-api/build.gradle#L11
from compileOnly to implementation
Alternatively, do not expose JsonConfigParser to consumers of your library.
Recent Change
No response
Conflicts
No response
Guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Línea de trabajo
Comienza en core-api/build.gradle, línea 11, e inspecciona cómo se declara la dependencia org.json para JsonConfigParser. Ejecuta la reproducción de Maven indicada con la versión 4.1.1 de core-api y, a continuación, verifica que los consumidores puedan ejecutar JsonConfigParser sin declarar org.json por su cuenta.
Escrito por el modelo de indexación a partir del texto del issue.
Evaluación
- Stack tecnológico
- java
- Área
- build-system
- Tipo de issue
- Error
- Dificultad
- 2/5
- Tiempo estimado
- 1-3 horas
- Estado de actividad
- Estancado
- Claridad
- Bien especificado
- Aptitud para principiantes
- 35/100