Allwewnątrz pliku jar nie jest widoczny na wiosnę
stworzyłem plik jar z następującym MANIFEST.MF Wewnątrz:
Manifest-Version: 1.0
Ant-Version: Apache Ant 1.8.3
Created-By: 1.6.0_25-b06 (Sun Microsystems Inc.)
Main-Class: my.Main
Class-Path: . lib/spring-core-3.2.0.M2.jar lib/spring-beans-3.2.0.M2.jar
W nasady istnieje plik o nazwie my.config którą cytowano w moim wiosna-context.xml tak:
<bean id="..." class="...">
<property name="resource" value="classpath:my.config" />
</bean>
Jeśli uruchomię słoik, wszystko wygląda dobrze escept ładowanie tego konkretnego pliku:
Caused by: java.io.FileNotFoundException: class path resource [my.config] cannot be resolved to absolute file path because it does not reside in the file system: jar:file:/D:/work/my.jar!/my.config
at org.springframework.util.ResourceUtils.getFile(ResourceUtils.java:205)
at org.springframework.core.io.AbstractFileResolvingResource.getFile(AbstractFileResolvingResource.java:52)
at eu.stepman.server.configuration.BeanConfigurationFactoryBean.getObject(BeanConfigurationFactoryBean.java:32)
at eu.stepman.server.configuration.BeanConfigurationFactoryBean.getObject(BeanConfigurationFactoryBean.java:1)
at org.springframework.beans.factory.support.FactoryBeanRegistrySupport.doGetObjectFromFactoryBean(FactoryBeanRegistrySupport.java:142)
... 22 more
- zajęcia załadowany od wewnątrz słoja
- sprężyny i inne zależności ładowane są z oddzielnych słoików kontekst
- sprężysty jest włożony (New ClassPathXmlApplicationContext („sprężyny kontekst/applicationContext.xml”))
- my.properties jest ładowany do PropertyPlaceholderConfigurer ("classpath: my.properties")
- jeśli ustawię plik .config poza systemem plików i zmienię URL zasobu na "file:", wszystko wydaje się być w porządku. ..
Jakieś wskazówki?
Są w tym samym słoiku, ale wypróbowałem Twoje rozwiązanie z tym samym wynikiem: java.io.FileNotFoundException: zasób ścieżki klasy [classpath *: my.config] nie może zostać przetłumaczony na URL, ponieważ nie istnieje – BTakacs
Próbowałem przenieść plik do katalogu 'conf', ale to nie pomogło. (Dokumentacja mówi: "Oznacza to, że wzorzec taki jak" classpath *: *. Xml "nie pobierze plików z katalogu głównego plików jar, a raczej tylko z katalogu głównego rozszerzonych katalogów, co wynika z ograniczenia klasy ClassLoader pakietu JDK. Metoda getResources(), która zwraca tylko lokalizacje systemu plików dla przekazanego pustego łańcucha (wskazującego potencjalne źródła wyszukiwania). ") – BTakacs
Dziwne jest to: my.properties jest ładowany przez PropertyPlaceholderConfigurer, a log4j.properties został znaleziony przez sl4j .. i są w tej samej lokalizacji ... Tylko ten plik ... – BTakacs