ANT, уже запущенный к тому моменту, когда он читает XML-файл, содержащий указанный путь к классу вашего прогона, фактически не может сбросить путь к классу работающей JVM.Вместо этого он пытается добавить к нему цепочку загрузчиков классов;однако ваш вызов загрузчику классов, вероятно, захватывает корневой загрузчик классов.Возможно, вы захотите сделать что-то вроде этого:
this.getClass().getClassLoader().getResourceAsStream("com/example/test.properties");
, что заставит класс использовать тот же загрузчик классов, с которым он был загружен.Это должно (надеюсь) перейти в цепочку ClassLoader в нужном месте, как если бы он загрузил текущий класс и файл свойств соответствующим образом «переместился» вместе с текущим классом, тогда файл свойств должен быть доступен через тот же загрузчик классов.
Обратите внимание, что есть много веских причин для того, чтобы разветвлять JVM.Самое важное, на мой взгляд, это избавить всю JVM от классов, связанных с ANT.Вы не хотите случайно привязывать вашу среду выполнения к классам, которые доступны только во время процесса сборки программного обеспечения, и если вы хотите привязать свои классы к ANT, им нужно управлять как сторонней библиотекой (чтобы вы могли контролировать версиион связывается со степенью связывания, способностью одинаково воспроизводить сборку для нескольких версий / выпусков ANT и т. д.)