Я генерирую и класс, и перечисления, и сгенерированный код выглядит нормально. Сгенерированные перечисления находятся в подпакете сгенерированного класса.
Generated class package - com.pkg1.pkg2
Generated enum package - com.pkg1.pkg2.enums
У меня есть java контрольный пример, где класс должен компилироваться. Поэтому для этого я сначала собираю перечисления. Это отлично работает. Теперь тест не проходит, когда методы-установщики класса имеют перечисление в качестве входных параметров.
1) пример кода для Enum-Weather:
package com.pkg1.pkg2.enums;
public enum Weather{
SUMMER("summer"),
WINTER("winter");
public final String value;
public Weather(String value) {
this.value = value;
}
public String getValue() {
return value;
}
}
2) пример кода класса Погода:
package com.pkg1.pkg2;
import com.pkg1.pkg2.enums.Weather;
public interface Weather extends CityWeather{
public void setWeather(Weather weather);
}
3) Пример кода теста:
@BeforeClass
public static void beforeAllTestMethods() throws Exception {
/* First 3 lines runs without any error */
String enumsPath = Paths.get("").toAbsolutePath().toString()+ "com/pkg1/pkg2/enums/"
JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();
compiler.run(null,null,null,enumsPath + "Weather.java");
/* The below code fails.
error: package com.pkg1.pkg2.enums does not exist
import com.pkg1.pkg2.enums.Weather;
^
*/
String classPath = Paths.get("").toAbsolutePath().toString()+ "com/pkg1/pkg2/"
JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();
compiler.run(null,null,null,classPath + "Weather.java");
Любое предложение, пожалуйста.