diff --git a/pom.xml b/pom.xml
index 6c000fdbc..605714796 100644
--- a/pom.xml
+++ b/pom.xml
@@ -360,6 +360,13 @@
+
+ with-classlib-comparison
+
+ tools/classlib-comparison-gen
+
+
+
sign-artifacts
diff --git a/tools/classlib-comparison-gen/pom.xml b/tools/classlib-comparison-gen/pom.xml
new file mode 100644
index 000000000..6ecf65bcd
--- /dev/null
+++ b/tools/classlib-comparison-gen/pom.xml
@@ -0,0 +1,101 @@
+
+
+ 4.0.0
+
+
+ org.teavm
+ teavm
+ 0.6.0-SNAPSHOT
+ ../..
+
+ teavm-classlib-comparison-gen
+
+ Tool that generates HTML report about supported classes in TeaVM
+ Tool that generates HTML report about supported classes in TeaVM
+
+
+
+ org.teavm
+ teavm-classlib
+ ${project.version}
+ runtime
+
+
+
+ org.ow2.asm
+ asm-commons
+ true
+
+
+ org.ow2.asm
+ asm-util
+ true
+
+
+ commons-io
+ commons-io
+ true
+
+
+ com.carrotsearch
+ hppc
+ 0.7.3
+ true
+
+
+ org.teavm
+ teavm-core
+ ${project.version}
+
+
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-compiler-plugin
+ 3.8.0
+
+
+ 9
+
+
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-checkstyle-plugin
+
+ ../../checkstyle.xml
+ config_loc=${basedir}/../..
+
+
+
+ org.apache.maven.plugins
+ maven-source-plugin
+
+
+ org.apache.maven.plugins
+ maven-javadoc-plugin
+
+
+
+
\ No newline at end of file
diff --git a/classlib/src/main/java/org/teavm/classlib/impl/report/JCLClass.java b/tools/classlib-comparison-gen/src/main/java/org/teavm/tools/classlibcomparison/JCLClass.java
similarity index 68%
rename from classlib/src/main/java/org/teavm/classlib/impl/report/JCLClass.java
rename to tools/classlib-comparison-gen/src/main/java/org/teavm/tools/classlibcomparison/JCLClass.java
index 8897c6b68..b87d8169a 100644
--- a/classlib/src/main/java/org/teavm/classlib/impl/report/JCLClass.java
+++ b/tools/classlib-comparison-gen/src/main/java/org/teavm/tools/classlibcomparison/JCLClass.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2014 Alexey Andreev.
+ * Copyright 2019 konsoletyper.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -13,19 +13,20 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.teavm.classlib.impl.report;
+package org.teavm.tools.classlibcomparison;
import java.util.ArrayList;
import java.util.List;
class JCLClass {
- public final String name;
- public JCLStatus status;
- public JCLVisibility visibility = JCLVisibility.PUBLIC;
- public JCLClassType type;
- public final List items = new ArrayList<>();
+ final String name;
+ JCLStatus status;
+ JCLVisibility visibility = JCLVisibility.PUBLIC;
+ JCLClassType type;
+ String outer;
+ final List items = new ArrayList<>();
- public JCLClass(String name) {
+ JCLClass(String name) {
this.name = name;
}
}
diff --git a/classlib/src/main/java/org/teavm/classlib/impl/report/JCLClassType.java b/tools/classlib-comparison-gen/src/main/java/org/teavm/tools/classlibcomparison/JCLClassType.java
similarity index 89%
rename from classlib/src/main/java/org/teavm/classlib/impl/report/JCLClassType.java
rename to tools/classlib-comparison-gen/src/main/java/org/teavm/tools/classlibcomparison/JCLClassType.java
index c1025bedf..21d77f4c1 100644
--- a/classlib/src/main/java/org/teavm/classlib/impl/report/JCLClassType.java
+++ b/tools/classlib-comparison-gen/src/main/java/org/teavm/tools/classlibcomparison/JCLClassType.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2014 Alexey Andreev.
+ * Copyright 2019 konsoletyper.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -13,7 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.teavm.classlib.impl.report;
+package org.teavm.tools.classlibcomparison;
enum JCLClassType {
CLASS,
diff --git a/classlib/src/main/java/org/teavm/classlib/impl/report/JCLComparisonBuilder.java b/tools/classlib-comparison-gen/src/main/java/org/teavm/tools/classlibcomparison/JCLComparisonBuilder.java
similarity index 79%
rename from classlib/src/main/java/org/teavm/classlib/impl/report/JCLComparisonBuilder.java
rename to tools/classlib-comparison-gen/src/main/java/org/teavm/tools/classlibcomparison/JCLComparisonBuilder.java
index f22ebbf26..8caa68b8a 100644
--- a/classlib/src/main/java/org/teavm/classlib/impl/report/JCLComparisonBuilder.java
+++ b/tools/classlib-comparison-gen/src/main/java/org/teavm/tools/classlibcomparison/JCLComparisonBuilder.java
@@ -13,14 +13,31 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.teavm.classlib.impl.report;
+package org.teavm.tools.classlibcomparison;
-import java.io.*;
-import java.net.URL;
-import java.net.URLDecoder;
-import java.util.*;
-import java.util.jar.JarEntry;
-import java.util.jar.JarInputStream;
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.io.OutputStream;
+import java.io.OutputStreamWriter;
+import java.io.Reader;
+import java.io.Writer;
+import java.net.URI;
+import java.nio.charset.StandardCharsets;
+import java.nio.file.FileSystemNotFoundException;
+import java.nio.file.FileVisitResult;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.Paths;
+import java.nio.file.SimpleFileVisitor;
+import java.nio.file.attribute.BasicFileAttributes;
+import java.util.ArrayList;
+import java.util.Comparator;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
import org.apache.commons.io.IOUtils;
import org.objectweb.asm.ClassReader;
import org.objectweb.asm.Type;
@@ -28,11 +45,8 @@ import org.teavm.model.ReferenceCache;
import org.teavm.parsing.ClasspathClassHolderSource;
public class JCLComparisonBuilder {
- private static final String JAR_PREFIX = "jar:file:";
- private static final String JAR_SUFFIX = "!/java/lang/Object.class";
private static final String CLASS_SUFFIX = ".class";
private static final String TEMPLATE_PLACEHOLDER = "${CONTENT}";
- private Set packages = new HashSet<>();
private ClassLoader classLoader = JCLComparisonBuilder.class.getClassLoader();
private JCLComparisonVisitor visitor;
private String outputDirectory;
@@ -45,10 +59,6 @@ public class JCLComparisonBuilder {
this.classLoader = classLoader;
}
- public Set getPackages() {
- return packages;
- }
-
public String getOutputDirectory() {
return outputDirectory;
}
@@ -59,7 +69,7 @@ public class JCLComparisonBuilder {
public static void main(String[] args) throws IOException {
if (args.length == 0) {
- System.err.println("Usage: package.name [package.name2 ...] [-output directory]");
+ System.err.println("Usage: -output ");
System.exit(1);
}
JCLComparisonBuilder builder = new JCLComparisonBuilder();
@@ -67,8 +77,6 @@ public class JCLComparisonBuilder {
for (int i = 0; i < args.length; ++i) {
if (args[i].equals("-output")) {
builder.setOutputDirectory(args[++i]);
- } else {
- builder.getPackages().add(args[i].replace('.', '/'));
}
}
@@ -90,7 +98,7 @@ public class JCLComparisonBuilder {
copyResource("html/enum_obj.png");
copyResource("html/annotation_obj.png");
try (Writer out = new OutputStreamWriter(new FileOutputStream(new File(
- outputDirectory, "jcl.html")), "UTF-8")) {
+ outputDirectory, "jcl.html")), StandardCharsets.UTF_8)) {
generateHtml(out, packages);
}
File packagesDirectory = new File(outputDirectory, "packages");
@@ -115,47 +123,75 @@ public class JCLComparisonBuilder {
private List buildModel() throws IOException {
Map packageMap = new HashMap<>();
- URL url = classLoader.getResource("java/lang/Object" + CLASS_SUFFIX);
- String path = url.toString();
- if (!path.startsWith(JAR_PREFIX) || !path.endsWith(JAR_SUFFIX)) {
- throw new RuntimeException("Can't find JCL classes");
- }
ClasspathClassHolderSource classSource = new ClasspathClassHolderSource(classLoader, new ReferenceCache());
- path = path.substring(JAR_PREFIX.length(), path.length() - JAR_SUFFIX.length());
- File outDir = new File(outputDirectory).getParentFile();
- if (!outDir.exists()) {
- outDir.mkdirs();
+ visitor = new JCLComparisonVisitor(classSource, packageMap);
+ try {
+ Path p = Paths.get(URI.create("jrt:/modules/java.base/java/"));
+ Files.walkFileTree(p, new SimpleFileVisitor<>() {
+ @Override
+ public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) throws IOException {
+ if (validateName(file.getFileName().toString())) {
+ try (InputStream input = Files.newInputStream(file)) {
+ compareClass(input);
+ } catch (IOException e) {
+ throw new RuntimeException(e);
+ }
+ }
+ return FileVisitResult.CONTINUE;
+ }
+ });
+ System.out.println();
+ } catch (FileSystemNotFoundException ex) {
+ System.out.println("Could not read my modules (perhaps not Java 9?).");
}
- path = URLDecoder.decode(path, "UTF-8");
- try (JarInputStream jar = new JarInputStream(new FileInputStream(path))) {
- visitor = new JCLComparisonVisitor(classSource, packageMap);
- while (true) {
- JarEntry entry = jar.getNextJarEntry();
- if (entry == null) {
- break;
+
+ for (JCLPackage pkg : packageMap.values()) {
+ for (JCLClass cls : pkg.classes.toArray(new JCLClass[0])) {
+ if (cls.outer != null) {
+ removeInnerPrivateClasses(packageMap, pkg, cls.name);
}
- if (validateName(entry.getName())) {
- compareClass(jar);
- }
- jar.closeEntry();
}
}
+
+ for (String packageName : packageMap.keySet().toArray(new String[0])) {
+ JCLPackage pkg = packageMap.get(packageName);
+ if (pkg.classes.stream().allMatch(cls -> cls.status == JCLStatus.MISSING)) {
+ packageMap.remove(packageName);
+ } else if (pkg.classes.stream().anyMatch(cls -> cls.status == JCLStatus.MISSING)) {
+ pkg.status = JCLStatus.PARTIAL;
+ }
+ }
+
return new ArrayList<>(packageMap.values());
}
+ private boolean removeInnerPrivateClasses(Map packageMap, JCLPackage pkg, String className) {
+ JCLClass cls = pkg.classes.stream().filter(c -> c.name.equals(className)).findFirst().orElse(null);
+ if (cls == null) {
+ return true;
+ }
+
+ if (cls.outer != null) {
+ String packageName = cls.outer.substring(0, cls.outer.lastIndexOf('.'));
+ JCLPackage outerPackage = packageMap.get(packageName);
+ if (outerPackage == null || removeInnerPrivateClasses(packageMap, outerPackage, cls.outer)) {
+ pkg.classes.remove(cls);
+ return true;
+ }
+ }
+
+ return false;
+ }
+
private void processModel(List packages) {
- Collections.sort(packages, (o1, o2) -> o1.name.compareTo(o2.name));
+ packages.sort(Comparator.comparing(o -> o.name));
for (JCLPackage pkg : packages) {
- Collections.sort(pkg.classes, (o1, o2) -> o1.name.compareTo(o2.name));
+ pkg.classes.sort(Comparator.comparing(o -> o.name));
}
}
private boolean validateName(String name) {
- if (!name.endsWith(CLASS_SUFFIX)) {
- return false;
- }
- int slashIndex = name.lastIndexOf('/');
- return slashIndex >= 0 && packages.contains(name.substring(0, slashIndex));
+ return name.endsWith(CLASS_SUFFIX);
}
private void compareClass(InputStream input) throws IOException {
@@ -174,7 +210,8 @@ public class JCLComparisonBuilder {
private void generateHtml(Writer out, List packages) throws IOException {
String template;
- try (Reader reader = new InputStreamReader(classLoader.getResourceAsStream("html/jcl.html"), "UTF-8")) {
+ try (Reader reader = new InputStreamReader(classLoader.getResourceAsStream("html/jcl.html"),
+ StandardCharsets.UTF_8)) {
template = IOUtils.toString(reader);
}
int placeholderIndex = template.indexOf(TEMPLATE_PLACEHOLDER);
@@ -207,7 +244,8 @@ public class JCLComparisonBuilder {
private void generatePackageHtml(Writer out, JCLPackage pkg) throws IOException {
String template;
- try (Reader reader = new InputStreamReader(classLoader.getResourceAsStream("html/jcl-class.html"), "UTF-8")) {
+ try (Reader reader = new InputStreamReader(classLoader.getResourceAsStream("html/jcl-class.html"),
+ StandardCharsets.UTF_8)) {
template = IOUtils.toString(reader);
}
template = template.replace("${CLASSNAME}", pkg.name);
@@ -242,7 +280,8 @@ public class JCLComparisonBuilder {
private void generateClassHtml(Writer out, JCLPackage pkg, JCLClass cls) throws IOException {
String template;
- try (Reader reader = new InputStreamReader(classLoader.getResourceAsStream("html/jcl-class.html"), "UTF-8")) {
+ try (Reader reader = new InputStreamReader(classLoader.getResourceAsStream("html/jcl-class.html"),
+ StandardCharsets.UTF_8)) {
template = IOUtils.toString(reader);
}
template = template.replace("${CLASSNAME}", pkg.name + "." + cls.name);
diff --git a/classlib/src/main/java/org/teavm/classlib/impl/report/JCLComparisonVisitor.java b/tools/classlib-comparison-gen/src/main/java/org/teavm/tools/classlibcomparison/JCLComparisonVisitor.java
similarity index 88%
rename from classlib/src/main/java/org/teavm/classlib/impl/report/JCLComparisonVisitor.java
rename to tools/classlib-comparison-gen/src/main/java/org/teavm/tools/classlibcomparison/JCLComparisonVisitor.java
index d12c5117e..f1a12f0b9 100644
--- a/classlib/src/main/java/org/teavm/classlib/impl/report/JCLComparisonVisitor.java
+++ b/tools/classlib-comparison-gen/src/main/java/org/teavm/tools/classlibcomparison/JCLComparisonVisitor.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2014 Alexey Andreev.
+ * Copyright 2019 konsoletyper.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -13,7 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.teavm.classlib.impl.report;
+package org.teavm.tools.classlibcomparison;
import java.util.Map;
import org.objectweb.asm.*;
@@ -135,30 +135,9 @@ class JCLComparisonVisitor extends ClassVisitor {
}
@Override
- public void visitSource(String source, String debug) {
- }
-
- @Override
- public void visitOuterClass(String owner, String name, String desc) {
- }
-
- @Override
- public AnnotationVisitor visitAnnotation(String desc, boolean visible) {
- return null;
- }
-
- @Override
- public void visitAttribute(Attribute attr) {
- }
-
- @Override
- public void visitInnerClass(String name, String outerName, String innerName, int access) {
- }
-
- @Override
- public void visitEnd() {
- if (jclPackage != null && (jclClass == null || jclClass.status != JCLStatus.FOUND)) {
- jclPackage.status = JCLStatus.PARTIAL;
+ public void visitNestHost(String nestHost) {
+ if (jclClass != null) {
+ jclClass.outer = nestHost.replace('/', '.');
}
}
}
diff --git a/classlib/src/main/java/org/teavm/classlib/impl/report/JCLItem.java b/tools/classlib-comparison-gen/src/main/java/org/teavm/tools/classlibcomparison/JCLItem.java
similarity index 91%
rename from classlib/src/main/java/org/teavm/classlib/impl/report/JCLItem.java
rename to tools/classlib-comparison-gen/src/main/java/org/teavm/tools/classlibcomparison/JCLItem.java
index 8573bf83d..052d3523a 100644
--- a/classlib/src/main/java/org/teavm/classlib/impl/report/JCLItem.java
+++ b/tools/classlib-comparison-gen/src/main/java/org/teavm/tools/classlibcomparison/JCLItem.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2014 Alexey Andreev.
+ * Copyright 2019 konsoletyper.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -13,7 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.teavm.classlib.impl.report;
+package org.teavm.tools.classlibcomparison;
class JCLItem {
public final JCLItemType type;
diff --git a/classlib/src/main/java/org/teavm/classlib/impl/report/JCLItemType.java b/tools/classlib-comparison-gen/src/main/java/org/teavm/tools/classlibcomparison/JCLItemType.java
similarity index 88%
rename from classlib/src/main/java/org/teavm/classlib/impl/report/JCLItemType.java
rename to tools/classlib-comparison-gen/src/main/java/org/teavm/tools/classlibcomparison/JCLItemType.java
index 07b3b56b9..092aaf663 100644
--- a/classlib/src/main/java/org/teavm/classlib/impl/report/JCLItemType.java
+++ b/tools/classlib-comparison-gen/src/main/java/org/teavm/tools/classlibcomparison/JCLItemType.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2014 Alexey Andreev.
+ * Copyright 2019 konsoletyper.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -13,7 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.teavm.classlib.impl.report;
+package org.teavm.tools.classlibcomparison;
enum JCLItemType {
FIELD,
diff --git a/classlib/src/main/java/org/teavm/classlib/impl/report/JCLPackage.java b/tools/classlib-comparison-gen/src/main/java/org/teavm/tools/classlibcomparison/JCLPackage.java
similarity index 91%
rename from classlib/src/main/java/org/teavm/classlib/impl/report/JCLPackage.java
rename to tools/classlib-comparison-gen/src/main/java/org/teavm/tools/classlibcomparison/JCLPackage.java
index 1206ea126..b361b5526 100644
--- a/classlib/src/main/java/org/teavm/classlib/impl/report/JCLPackage.java
+++ b/tools/classlib-comparison-gen/src/main/java/org/teavm/tools/classlibcomparison/JCLPackage.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2014 Alexey Andreev.
+ * Copyright 2019 konsoletyper.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -13,7 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.teavm.classlib.impl.report;
+package org.teavm.tools.classlibcomparison;
import java.util.ArrayList;
import java.util.List;
diff --git a/classlib/src/main/java/org/teavm/classlib/impl/report/JCLStatus.java b/tools/classlib-comparison-gen/src/main/java/org/teavm/tools/classlibcomparison/JCLStatus.java
similarity index 89%
rename from classlib/src/main/java/org/teavm/classlib/impl/report/JCLStatus.java
rename to tools/classlib-comparison-gen/src/main/java/org/teavm/tools/classlibcomparison/JCLStatus.java
index 3d8aa266c..b690a6d94 100644
--- a/classlib/src/main/java/org/teavm/classlib/impl/report/JCLStatus.java
+++ b/tools/classlib-comparison-gen/src/main/java/org/teavm/tools/classlibcomparison/JCLStatus.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2014 Alexey Andreev.
+ * Copyright 2019 konsoletyper.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -13,7 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.teavm.classlib.impl.report;
+package org.teavm.tools.classlibcomparison;
enum JCLStatus {
FOUND,
diff --git a/classlib/src/main/java/org/teavm/classlib/impl/report/JCLVisibility.java b/tools/classlib-comparison-gen/src/main/java/org/teavm/tools/classlibcomparison/JCLVisibility.java
similarity index 89%
rename from classlib/src/main/java/org/teavm/classlib/impl/report/JCLVisibility.java
rename to tools/classlib-comparison-gen/src/main/java/org/teavm/tools/classlibcomparison/JCLVisibility.java
index a821aeb03..85901935e 100644
--- a/classlib/src/main/java/org/teavm/classlib/impl/report/JCLVisibility.java
+++ b/tools/classlib-comparison-gen/src/main/java/org/teavm/tools/classlibcomparison/JCLVisibility.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2014 Alexey Andreev.
+ * Copyright 2019 konsoletyper.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -13,7 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.teavm.classlib.impl.report;
+package org.teavm.tools.classlibcomparison;
enum JCLVisibility {
PUBLIC,
diff --git a/classlib/src/main/resources/html/annotation_obj.png b/tools/classlib-comparison-gen/src/main/resources/html/annotation_obj.png
similarity index 100%
rename from classlib/src/main/resources/html/annotation_obj.png
rename to tools/classlib-comparison-gen/src/main/resources/html/annotation_obj.png
diff --git a/classlib/src/main/resources/html/class_obj.png b/tools/classlib-comparison-gen/src/main/resources/html/class_obj.png
similarity index 100%
rename from classlib/src/main/resources/html/class_obj.png
rename to tools/classlib-comparison-gen/src/main/resources/html/class_obj.png
diff --git a/classlib/src/main/resources/html/enum_obj.png b/tools/classlib-comparison-gen/src/main/resources/html/enum_obj.png
similarity index 100%
rename from classlib/src/main/resources/html/enum_obj.png
rename to tools/classlib-comparison-gen/src/main/resources/html/enum_obj.png
diff --git a/classlib/src/main/resources/html/field_protected_obj.png b/tools/classlib-comparison-gen/src/main/resources/html/field_protected_obj.png
similarity index 100%
rename from classlib/src/main/resources/html/field_protected_obj.png
rename to tools/classlib-comparison-gen/src/main/resources/html/field_protected_obj.png
diff --git a/classlib/src/main/resources/html/field_public_obj.png b/tools/classlib-comparison-gen/src/main/resources/html/field_public_obj.png
similarity index 100%
rename from classlib/src/main/resources/html/field_public_obj.png
rename to tools/classlib-comparison-gen/src/main/resources/html/field_public_obj.png
diff --git a/classlib/src/main/resources/html/int_obj.png b/tools/classlib-comparison-gen/src/main/resources/html/int_obj.png
similarity index 100%
rename from classlib/src/main/resources/html/int_obj.png
rename to tools/classlib-comparison-gen/src/main/resources/html/int_obj.png
diff --git a/classlib/src/main/resources/html/jcl-class.html b/tools/classlib-comparison-gen/src/main/resources/html/jcl-class.html
similarity index 100%
rename from classlib/src/main/resources/html/jcl-class.html
rename to tools/classlib-comparison-gen/src/main/resources/html/jcl-class.html
diff --git a/classlib/src/main/resources/html/jcl.css b/tools/classlib-comparison-gen/src/main/resources/html/jcl.css
similarity index 100%
rename from classlib/src/main/resources/html/jcl.css
rename to tools/classlib-comparison-gen/src/main/resources/html/jcl.css
diff --git a/classlib/src/main/resources/html/jcl.html b/tools/classlib-comparison-gen/src/main/resources/html/jcl.html
similarity index 100%
rename from classlib/src/main/resources/html/jcl.html
rename to tools/classlib-comparison-gen/src/main/resources/html/jcl.html
diff --git a/classlib/src/main/resources/html/methpro_obj.png b/tools/classlib-comparison-gen/src/main/resources/html/methpro_obj.png
similarity index 100%
rename from classlib/src/main/resources/html/methpro_obj.png
rename to tools/classlib-comparison-gen/src/main/resources/html/methpro_obj.png
diff --git a/classlib/src/main/resources/html/methpub_obj.png b/tools/classlib-comparison-gen/src/main/resources/html/methpub_obj.png
similarity index 100%
rename from classlib/src/main/resources/html/methpub_obj.png
rename to tools/classlib-comparison-gen/src/main/resources/html/methpub_obj.png
diff --git a/classlib/src/main/resources/html/package_obj.png b/tools/classlib-comparison-gen/src/main/resources/html/package_obj.png
similarity index 100%
rename from classlib/src/main/resources/html/package_obj.png
rename to tools/classlib-comparison-gen/src/main/resources/html/package_obj.png