Skip to content

Commit bc347d6

Browse files
committed
Fix importing in built JARs
1 parent 05dd8b3 commit bc347d6

6 files changed

Lines changed: 15 additions & 12 deletions

File tree

.gitignore

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
*.class
22
/bin/
33
__pycache__
4-
sorts
5-
!src/sorts
4+
cache
65
antiqsort_*
76
network_*.svg

dist/arrayVisualizer.jar

110 Bytes
Binary file not shown.

dist/build.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
<jar destfile="${dir.jarfile}/arrayVisualizer.jar">
1111
<manifest>
1212
<attribute name="Main-Class" value="main.ArrayVisualizer"/>
13-
<attribute name="Class-Path" value="."/>
13+
<attribute name="Class-Path" value="cache"/>
1414
</manifest>
1515
<zipfileset src="../lib/classgraph-4.8.47.jar"/>
1616
<fileset dir="../bin"/>

run.bat

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
java -Dsun.java2d.d3d=false -cp bin;lib/classgraph-4.8.47.jar main.ArrayVisualizer %1
1+
java -Dsun.java2d.d3d=false -cp bin;lib/classgraph-4.8.47.jar;cache main.ArrayVisualizer %1

run.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
java -Dsun.java2d.d3d=false -cp bin:lib/classgraph-4.8.47.jar main.ArrayVisualizer $1
1+
java -Dsun.java2d.d3d=false -cp bin:lib/classgraph-4.8.47.jar:cache main.ArrayVisualizer $1

src/main/SortAnalyzer.java

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -99,10 +99,14 @@ public SortAnalyzer(ArrayVisualizer arrayVisualizer) {
9999
private boolean compileSingle(String name, ClassLoader loader) {
100100
try {
101101
Class<?> sortClass;
102-
if (loader == null)
103-
sortClass = Class.forName(name);
104-
else
105-
sortClass = Class.forName(name, true, loader);
102+
try {
103+
if (loader == null)
104+
sortClass = Class.forName(name);
105+
else
106+
sortClass = Class.forName(name, true, loader);
107+
} catch (ClassNotFoundException e) {
108+
return true;
109+
}
106110
// System.out.println(sortClass.getConstructors()[0].getParameterTypes()[0].hashCode());
107111
Constructor<?> newSort = sortClass.getConstructor(new Class[] {ArrayVisualizer.class});
108112
// Constructor<?> newSort = sortClass.getConstructors()[0];
@@ -138,11 +142,11 @@ private boolean compileSingle(String name, ClassLoader loader) {
138142
return true;
139143
}
140144

141-
@SuppressWarnings("unused")
142145
public void analyzeSorts() {
143146
ClassGraph classGraph = new ClassGraph();
144147
classGraph.whitelistPackages("sorts");
145148
classGraph.blacklistPackages("sorts.templates");
149+
classGraph.blacklistPaths("cache/*");
146150

147151
try (ScanResult scanResult = classGraph.scan()) {
148152
List<ClassInfo> sortFiles;
@@ -175,7 +179,7 @@ public boolean importSort(File file, boolean showConfirmation) {
175179
}
176180
String packageName = matcher.group(1);
177181
String name = packageName + "." + file.getName().split("\\.")[0];
178-
File tempPath = new File(String.join("/", packageName.split("\\.")));
182+
File tempPath = new File("./cache/" + String.join("/", packageName.split("\\.")));
179183
tempPath.mkdirs();
180184
File destPath = new File(tempPath.getAbsolutePath() + "/" + file.getName());
181185
try {
@@ -194,7 +198,7 @@ public boolean importSort(File file, boolean showConfirmation) {
194198
}
195199

196200
try {
197-
if (!compileSingle(name, URLClassLoader.newInstance(new URL[] { new File(".").toURI().toURL() })))
201+
if (!compileSingle(name, URLClassLoader.newInstance(new URL[] { new File("./cache/").toURI().toURL() })))
198202
return false;
199203
}
200204
catch (Exception e) {

0 commit comments

Comments
 (0)