Skip to content

Commit 4e0e5a3

Browse files
khatchadclaude
andcommitted
Bundle commons-codec with common.eval to complete commons-csv's closure
The commons-io fix in v5.6.0 (#65) got the bundled commons-csv past its first missing transitive dependency, but commons-csv 1.12.0's runtime closure is both commons-io and commons-codec: it references org.apache.commons.codec.binary.Base64OutputStream, yielding a second NoClassDefFoundError under strict OSGi classloading in a materialized product. commons-csv's own OSGi manifest enumerates its complete runtime closure via Import-Package: exactly org.apache.commons.codec.binary and the org.apache.commons.io.* packages. So the closure is bounded (io plus codec), not open-ended. Bundle commons-codec 1.17.1 the same way commons-io and commons-csv are bundled: self-contained, private to this bundle's classloader (not exported), so common.eval carries its entire commons-csv closure inside its own classloader regardless of what else the product assembles. Maintenance note: on each future commons-csv upgrade, re-check the csv jar's manifest Import-Package and bundle any newly added transitive dependency. Re #64. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_015jRmWZMAqpMDjsKmTATy3A
1 parent 3523fc8 commit 4e0e5a3

6 files changed

Lines changed: 9 additions & 2 deletions

File tree

edu.cuny.citytech.refactoring.common.eval/.classpath

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,11 @@
2222
<attribute name="javadoc_location" value="jar:platform:/resource/edu.cuny.citytech.refactoring.common.eval/lib/commons-io-2.17.0-javadoc.jar!/"/>
2323
</attributes>
2424
</classpathentry>
25+
<classpathentry kind="lib" path="lib/commons-codec-1.17.1.jar" sourcepath="lib/commons-codec-1.17.1-sources.jar">
26+
<attributes>
27+
<attribute name="javadoc_location" value="jar:platform:/resource/edu.cuny.citytech.refactoring.common.eval/lib/commons-codec-1.17.1-javadoc.jar!/"/>
28+
</attributes>
29+
</classpathentry>
2530
<classpathentry kind="con" path="org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER">
2631
<attributes>
2732
<attribute name="maven.pomderived" value="true"/>

edu.cuny.citytech.refactoring.common.eval/META-INF/MANIFEST.MF

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,8 @@ Automatic-Module-Name: edu.cuny.citytech.refactoring.common.eval
77
Bundle-RequiredExecutionEnvironment: JavaSE-21
88
Bundle-ClassPath: .,
99
lib/commons-csv-1.12.0.jar,
10-
lib/commons-io-2.17.0.jar
10+
lib/commons-io-2.17.0.jar,
11+
lib/commons-codec-1.17.1.jar
1112
Require-Bundle: org.eclipse.core.commands
1213
Export-Package: edu.cuny.citytech.refactoring.common.eval.handlers,
1314
org.apache.commons.csv;version="1.12.0"

edu.cuny.citytech.refactoring.common.eval/build.properties

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,4 +4,5 @@ bin.includes = META-INF/,\
44
.,\
55
OSGI-INF/,\
66
lib/commons-csv-1.12.0.jar,\
7-
lib/commons-io-2.17.0.jar
7+
lib/commons-io-2.17.0.jar,\
8+
lib/commons-codec-1.17.1.jar
Binary file not shown.
Binary file not shown.
Binary file not shown.

0 commit comments

Comments
 (0)