【发布时间】:2014-04-22 12:12:38
【问题描述】:
我在 Eclipse 中使用 spring 开发了一个 web 应用程序来处理依赖注入和部署 maven。 我正在尝试使用这个小代码:
public class MainExternal {
public static void main( String[] args ) throws Exception{
@SuppressWarnings("resource") ApplicationContext appContext = new ClassPathXmlApplicationContext( "classpath*:webConfiguration/applicationContext.xml"); ProjectBo projectBo = (ProjectBo) appContext.getBean("projectBo");
System.out.println("-> Im 'in ");
/************* PRINT OUT *************/
Project project = projectBo.findByNameOfStudy("Profiler");
List<User> listUser = (List<User>) projectBo.findUsers(project);
for (User myUser : listUser) {
System.out.println("User :"+myUser.getFirstname());
}
}
当我在 Eclipse 中运行它时,它可以工作。
但是当我从我的网络应用程序中调用它时,它不起作用:
public void throwAnalyse(){
System.out.println("->I call my function");
try {
String[] command= {"java","-cp", "/Users/JP/git/CleanOmicsTracer/target/CleanOmicsTracer.jar", "com.clb.genomic.lyon.external.MainExternal"};
Process p = Runtime.getRuntime().exec(command);
////////////////////////////////////////////
//test for remote command
String line;
BufferedReader bri = new BufferedReader(new InputStreamReader(p.getInputStream()));
BufferedReader bre = new BufferedReader(new InputStreamReader(p.getErrorStream()));
while ((line = bri.readLine()) != null) {
System.out.println(line);
}
bri.close();
while ((line = bre.readLine()) != null) {
System.out.println(line);
}
bre.close();
p.waitFor();
} catch (IOException e) { e.printStackTrace();
} catch (InterruptedException e) { e.printStackTrace(); }
System.out.println("End of programme");
}
当我尝试从控制台执行时:
java -cp /Users/JP/git/CleanOmicsTracer/target/CleanOmicsTracer.jar com.clb.genomic.lyon.external.MainExternal
它不再起作用并抛出:
线程“main”中的异常 java.lang.NoClassDefFoundError: org/springframework/context/ApplicationContext 引起:java.lang.ClassNotFoundException:org.springframework.context.ApplicationContext 在 java.net.URLClassLoader$1.run(URLClassLoader.java:202) 在 java.security.AccessController.doPrivileged(本机方法) 在 java.net.URLClassLoader.findClass(URLClassLoader.java:190) 在 java.lang.ClassLoader.loadClass(ClassLoader.java:306) 在 sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301) 在 java.lang.ClassLoader.loadClass(ClassLoader.java:247)
【问题讨论】:
标签: java spring classpath applicationcontext