Чтобы ответить на ваш вопрос, вы можете использовать Class.getResource (). GetProtocal (). Ниже приведен рабочий пример:
import java.util.Objects;
public class Test {
public static void main(String[] args){
String protocol = Test.class.getResource("Test.class").getProtocol();
if(Objects.equals(protocol, "jar")){
System.out.println("running in jar");
} else if(Objects.equals(protocol, "file")) {
System.out.println("running in file");
}
}
}
Или вот обходной путь, который может достичь той же цели более простым способом.
Вы можете передать параметр JVM в dev env, для instace , java -Dfolder =
В коде
if(StringUtils.isNotBlank(System.getParameter("folder")) //dev env
dataFolder = System.getParameter("folder")
else
dataFolder = <relative path in jar>
В зависимости от того, насколько серьезна программа, перед выпуском вы можете удалить код System.getParameter.