optimizely / optimizely/java-sdk
[BUG] Required dependency missing: org.json:json
Personne n'a encore pris cette issue.
- Langage dominant
- Java
- Étoiles
- 44
- Forks
- 32
- Merge moyen
- 8 h 39 min
- PR mergées (30 j)
- 1
Description
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
Guide de contribution
Ouvrir le guide de contribution
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Piste de recherche
Commencez à la ligne 11 de core-api/build.gradle et examinez la manière dont la dépendance org.json est déclarée pour JsonConfigParser. Exécutez la reproduction Maven signalée avec la version 4.1.1 de core-api, puis vérifiez que les consommateurs peuvent exécuter JsonConfigParser sans déclarer eux-mêmes org.json.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Évaluation
- Stack technique
- java
- Domaine
- build-system
- Type d'issue
- Bug
- Difficulté
- 2/5
- Temps estimé
- 1-3 heures
- Activité
- À l'abandon
- Clarté
- Clairement spécifiée
- Accessibilité débutants
- 35/100