2014-09-04 5 views
8

jsvc를 사용하면 내 스프링 부팅 응용 프로그램을 시작할 수 있습니다. 이미 대상 시스템에 있기 때문에 다른 방법으로는 가장자리의 경우 쉘 스크립트를 디버깅하는 데 시간을 할애 할 수 있습니다. 데몬 인터페이스를 구현 했으므로, 을 무시했기 때문에, 을 무시했기 때문에,가 불려 갔지만, 중첩 된 jars는 발견되지 않습니다.아파치 커먼즈 데몬 jsvc에 의해 실행될 때 어떻게 중첩 된 클래스 로딩을 설정할 수 있습니까?

올바른 클래스 로더 등을 프로그래밍 방식으로 설정하는 방법이 있습니까?

java.lang.ClassNotFoundException: org.springframework.boot.SpringApplication 
+0

안녕하세요 Paul님께 서 문제를 해결했습니다. 바람둥이 나 부두교를 포함하여 둔한 현재 구성을 볼 수있는 방법이 있습니까? – Tito

+0

@Tito : 저는 작업을 포기하고 스크립트와 runuser 등으로 돌아 가야했습니다. 이것은 스프링 부팅 응용 프로그램이므로 기본 스프링 부팅 (tomcat 포함) 이외의 서블릿 구성은 없습니다. –

답변

1

@Configuration 
@EnableAutoConfiguration 
@ComponentScan 
@EnableConfigurationProperties 
public class Application implements Daemon { 
private ConfigurableApplicationContext ctx; 
private String[] args; 

    @Override 
    public void init(DaemonContext context) throws Exception { 
    args = context.getArguments(); 
    } 

    @Override 
    public void start() throws Exception { 
    ctx = SpringApplication.run(Application.class, args); 
    } 

    @Override 
    public void stop() throws Exception { 
    ctx.stop(); 
    } 

    @Override 
    public void destroy() { 
    ctx.close(); 
    } 

    // Main - mostly for development. 
    public static void main(String[] args) throws Exception { 
    System.err.println("WARNING - running as current user"); 
    DaemonLoader.Context ctx = new DaemonLoader.Context(); 
    Application app = new Application(); 
    ctx.setArguments(args); 
    app.init(ctx); 
    app.start(); 
    } 
} 

이 오류가 나는이 문제를 해결했습니다.

뚱뚱한 단지 대신 음영 처리 된 항아리를 만들어야했습니다. 그런 다음 JarLoader를 사용하는 대신 메인 클래스를 메인 클래스로 직접 변경했습니다. "Application"클래스의 오리지널 포스터의 경우.