From 2df9bd0665217e9e3ae3d50ad322fe1dd7d2b385 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jonas=20P=C3=B6hler?= Date: Wed, 19 Apr 2023 14:55:47 +0200 Subject: [PATCH] Fix for 'Cannot invoke ... because "classPath" is null.' Compiler output can contain non-class files like files generated by annotation processing. These cannot be "hotswapped" and don't have a classname, so have to be filtered out. --- .../singlehotswap/compiler/impl/BuiltInJavaCompiler.java | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/main/java/net/labymod/intellij/singlehotswap/compiler/impl/BuiltInJavaCompiler.java b/src/main/java/net/labymod/intellij/singlehotswap/compiler/impl/BuiltInJavaCompiler.java index dfab029..0f50edc 100644 --- a/src/main/java/net/labymod/intellij/singlehotswap/compiler/impl/BuiltInJavaCompiler.java +++ b/src/main/java/net/labymod/intellij/singlehotswap/compiler/impl/BuiltInJavaCompiler.java @@ -89,8 +89,11 @@ public List compile(Module module, VirtualFile sourceFile, ClassFile File compiledFile = new File(classObject.getPath()); FileUtil.writeToFile(compiledFile, bytes); - // Add class file to list - classFiles.add(ClassFile.fromClassObject(project, classObject)); + // filter out any non-class-objects generated (e. g. files from annotation processing) + if (classObject.getClassName() != null) { + // Add class file to list + classFiles.add(ClassFile.fromClassObject(project, classObject)); + } } return classFiles; }