Я пытаюсь использовать библиотеку генерации Typescript, которая называется ts-generator.Он живет на https://github.com/ntrrgc/ts-generator. Это выглядит довольно круто.
Моя проблема в том, что при попытке использовать библиотеку, я получаю
kotlin.jvm.KotlinReflectionNotSupportedError
В сообщении об ошибке также говорится, что яСкорее всего, мне не хватает kotlin-рефлекса. jar
Однако, похоже, банка находится на моем пути к классам.Я сделал SSCE, который, как мне кажется, демонстрирует мою проблему следующим образом.
Мой файл gradle -
jar {
baseName = 'eiep_codegen'
version = '1'
}
repositories {
maven { url 'https://jitpack.io' }
}
dependencies {
compile 'com.github.ntrrgc:ts-generator:1.1.0'
}
task execute(type:JavaExec) {
main = mainClass
classpath = sourceSets.main.runtimeClasspath
}
, и мой код, который я хочу запустить, -
package testing;
import java.net.URL;
import java.net.URLClassLoader;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import kotlin.jvm.internal.ClassReference;
import kotlin.reflect.KClass;
import me.ntrrgc.tsGenerator.TypeScriptGenerator;
import me.ntrrgc.tsGenerator.VoidType;
public class GenerateTSClasses
{
public static void main(String []args)
{
ClassLoader cl = ClassLoader.getSystemClassLoader();
URL[] urls = ((URLClassLoader)cl).getURLs();
for(URL url: urls){
System.out.println(url.getFile());
}
List<KClass<?>> roots = new ArrayList<>();
Map<KClass<?>, String> mappings = new HashMap<>();
roots.add(new ClassReference(GenerateMe.class));
System.out.println
(
new TypeScriptGenerator
(
roots,
mappings,
new ArrayList<>(),
new HashSet<>(),
"Hey There",
VoidType.NULL
).getDefinitionsText()
);
}
}
Вывод при запуске задачи выглядит следующим образом.Первый бит - это дамп classpath, в списке которого есть kotlin-refle-1.2.10.jar.Вторая часть - исключение.
/Users/joe/git/4.x/ei-sources/eiep_codegen/build/classes/java/main/
/Users/joe/git/4.x/ei-sources/eiep_codegen/build/resources/main
/Users/joe/.gradle/caches/modules-2/files-2.1/com.github.ntrrgc/ts-generator/1.1.0/3c9db2d2350dae022e3d4c8e77589a3e7f50db2b/ts-generator-1.1.0.jar
/Users/joe/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-reflect/1.2.10/19bc012f8c4cd6b705bd6512263777cc19bcf259/kotlin-reflect-1.2.10.jar
/Users/joe/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-stdlib/1.2.10/b9bf650516989595a5390e5a54181e16347208ac/kotlin-stdlib-1.2.10.jar
/Users/joe/.gradle/caches/modules-2/files-2.1/org.jetbrains/annotations/13.0/919f0dfe192fb4e063e7dacadee7f8bb9a2672a9/annotations-13.0.jar
Exception in thread "main" kotlin.jvm.KotlinReflectionNotSupportedError: Kotlin reflection implementation is not found at runtime. Make sure you have kotlin-reflect.jar in the classpath
at kotlin.jvm.internal.ClassReference.error(ClassReference.kt:86)
...
Мой вопрос: кто-нибудь знает, что может быть причиной этой проблемы?(Я предполагаю, что это не может быть номером версии после файла jar, но я тоже это проверю).
РЕДАКТИРОВАТЬ - я также вручную скопировал файлы jar и запустил программу изкомандная строка с использованием java --classpath.Имена файлов jar (как вы можете себе представить) не имеют никакого значения для результата.