2017-05-19 4 views
0

Ich versuche Hibernate + Spring zum ersten Mal und bekomme diesen Fehler beim Versuch, in DB einzufügen. Der String kommt aus der URL oder einen Standardwert: -IllegalArgument Ausnahme

@RequestMapping("/greeting") 
public Greeting greeting(@RequestParam(value="name", defaultValue="World") String name) { 

    InsertTest test = new InsertTest(); 
    test.insert(name); 
    return new Greeting(counter.incrementAndGet(), 
         String.format(template, name)); 
} 

Und die DAO-Methode ist: -

public void insert(String name) { 

    Resource r=new ClassPathResource("D:\\work\\Spring\\RestAPI\\src\\main\\java\\db\\app.xml"); 
    BeanFactory factory=new XmlBeanFactory(r); 

    EmployeeDao dao=(EmployeeDao)factory.getBean("d"); 

    Employee e=new Employee(); 
    e.setId(114); 
    e.setName(name); 
    e.setSalary(50000); 

    dao.saveEmployee(e); 

} 

Und ich Störung erhalte: -

java.lang.IllegalArgumentException: name 
    at sun.misc.URLClassPath$Loader.findResource(Unknown Source) ~[na:1.8.0_131] 
    at sun.misc.URLClassPath.findResource(Unknown Source) ~[na:1.8.0_131] 
    at java.net.URLClassLoader$2.run(Unknown Source) ~[na:1.8.0_131] 
    at java.net.URLClassLoader$2.run(Unknown Source) ~[na:1.8.0_131] 
    at java.security.AccessController.doPrivileged(Native Method) ~[na:1.8.0_131] 
    at java.net.URLClassLoader.findResource(Unknown Source) ~[na:1.8.0_131] 
    at org.springframework.boot.loader.LaunchedURLClassLoader.findResource(LaunchedURLClassLoader.java:58) ~[gs-rest-service-0.1.0.jar:0.1.0] 
    at java.lang.ClassLoader.getResource(Unknown Source) ~[na:1.8.0_131] 
    at java.net.URLClassLoader.getResourceAsStream(Unknown Source) ~[na:1.8.0_131] 
    at org.apache.catalina.loader.WebappClassLoaderBase.getResourceAsStream(WebappClassLoaderBase.java:1055) ~[tomcat-embed-core-8.5.11.jar!/:8.5.11] 
    at org.springframework.core.io.ClassPathResource.getInputStream(ClassPathResource.java:166) ~[spring-core-4.3.7.RELEASE.jar!/:4.3.7.RELEASE] 
    at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:330) ~[spring-beans-4.3.7.RELEASE.jar!/:4.3.7.RELEASE] 
    at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:304) ~[spring-beans-4.3.7.RELEASE.jar!/:4.3.7.RELEASE] 
    at org.springframework.beans.factory.xml.XmlBeanFactory.<init>(XmlBeanFactory.java:79) ~[spring-beans-4.3.7.RELEASE.jar!/:4.3.7.RELEASE] 
    at org.springframework.beans.factory.xml.XmlBeanFactory.<init>(XmlBeanFactory.java:67) ~[spring-beans-4.3.7.RELEASE.jar!/:4.3.7.RELEASE] 
    at main.java.db.InsertTest.insert(InsertTest.java:21) ~[classes!/:0.1.0] 
    at main.java.hello.GreetingController.greeting(GreetingController.java:23) ~[classes!/:0.1.0] 
+0

[Bearbeiten] Sie Ihre Frage und schließen Sie die volle Stack-Trace ein. In den nächsten Zeilen erfahren Sie genau, auf welcher Zeile der Fehler liegt. –

+0

Meine Annahme ist, dass 'name' entweder null oder leer ist, und die Ausnahme auf' e.setName (name); 'geworfen wird, wenn dies der Fall ist, debuggen und einfache Validierungen für den Wert, bevor es an die übergeben Methode. –

+0

Ich habe debugged vor dem Senden an die Methode, Es zeigt "Welt", wenn nichts in URL übergeben wird. Außerdem füge ich den Stacktrace –

Antwort

0

der gleichen Problem wie in Ihrer vorherigen Frage (nächstes Mal Fragen Sie einfach nach Erklärungen in den Kommentaren):

Error thrown file does not exist even though it is there

Sie müssen diesen Pfad angeben:

Resource r = new ClassPathResource("main/java/db/app.xml"); 

Dies ist kein Dateisystempfad, sondern ein Weg, der von der Wurzel Paket beginnt.