testcontainers / testcontainers/testcontainers-java
[Bug]: HiveMQExtension / Class Loading Issue
Personne n'a encore pris cette issue.
- Langage dominant
- Java
- Étoiles
- 8.7k
- Forks
- 1.9k
- Merge moyen
- 2 j 17 h
- PR mergées (30 j)
- 9
Description
Module
HiveMQ
Testcontainers version
1.20.6
Using the latest Testcontainers version?
Yes
Host OS
Linux
Host Arch
x64
Docker version
27.4
What happened?
Hello,
if you want to proplery JUnit Test a HiveMQExtension you need to unfortunately add all depencies used via the method "addAdditionalClass". However the following code leads to an exception "Unclosed character class near index 6
/[B$.*" due to following code:
private void putSubclassesIntoJar(
final @NotNull String extensionId,
final @Nullable Class<?> clazz,
final @NotNull JavaArchive javaArchive
) throws NotFoundException {
if (clazz != null) {
final Set<String> subClassNames = ClassPool
.getDefault()
.get(clazz.getName())
.getClassFile()
.getConstPool()
.getClassNames();
for (final String subClassName : subClassNames) {
final String className = subClassName.replaceAll("/", ".");
if (!className.startsWith("[L")) {
LOGGER.debug("Trying to package subclass '{}' into extension '{}'.", className, extensionId);
javaArchive.addClass(className);
} else {
LOGGER.debug("Class '{}' will be ignored.", className);
}
}
}
}
Based on inpuit "subClassNames" can include "[B" in additition to "[L" (already checked). I would propose to add another case OR allow the proplery extend this class in general (unfortunately private constructor) ...
Relevant log output
Additional Information
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 par la méthode putSubclassesIntoJar présentée dans le rapport et examinez comment les noms de classes de ClassPool sont convertis avant l’appel à JavaArchive.addClass. Reproduisez la configuration de HiveMQExtension avec addAdditionalClass et une entrée [B, puis vérifiez que le chargement des classes s’achève sans l’exception signalée et que la gestion existante de [L reste inchangée.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Évaluation
- Stack technique
- java
- Domaine
- testing-qa
- Type d'issue
- Bug
- Difficulté
- 3/5
- Temps estimé
- 1-2 jours
- Activité
- À l'abandon
- Clarté
- Plutôt claire
- Accessibilité débutants
- 48/100