JavaCompiler - сгенерированный класс не может получить доступ к сгенерированным перечислениям - PullRequest
1 голос
/ 07 апреля 2020

Я генерирую и класс, и перечисления, и сгенерированный код выглядит нормально. Сгенерированные перечисления находятся в подпакете сгенерированного класса.

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");

Любое предложение, пожалуйста.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...