// 업데이트 1 : 나는 좀 더 테스트를했던 libs와의 대부분을 제거하고 동일한 결과 lib에 특정 코드를 주석LogManager.getLogger는 ~ 10 ~ 30 초 동안 응용 프로그램 포장 마차 :
이 문제는 (직접적으로) libs에 의한 것이 아니라 내 코드 및/또는 설정의 일반적인 문제인 것처럼 보입니다.
주요한 문제는 Eclipse가 즉시 실행될 때 (즉, 즉시 시작, 고성능 등) 실행되는 이유를 이해하지 못한다는 것입니다. 동일한 JDK를 사용하는 실행 가능한 JAR로!).
어떤 차이가있을 수 있습니까?
// UPDATE의 END 1
// 원래의 게시물 :
날 여기에 의해 요구 이전 질문에서 오는 :는 관련이없는 것으로 Wrapped .exe with launch4j and jdk8 takes very long to start. Using jdk7 instead starts almost instant
지금 내가 아는 jdk8과 함께 launch4j하지만 그것은 내 응용 프로그램에서 jdk8의 조합 log4j로 인한 것 같습니다. 유사한 문제가 여기에서 논의되었습니다 : Log4j 2 hangs when creating logger 및 여기 : log4j LogManager.getLogger get's stuck in an infinite loop.
그러나 해결책 중 어느 것도 나를 위해 작동하지 않습니다. 문제는 나에게도 조금 다르다. 여기에 우리가 간다 :
메인 응용 프로그램의 기본 메서드는 이전의 로그 파일을 정리하는 등의 로거 개체를 초기화하기 전에 몇 가지 초기화 작업을 수행합니다. 각 단계는 System.out.println을 통해 디버깅 목적으로 인쇄됩니다. 이클립스 내에서 코드를 실행 (또는 디버그 실행 구성은 중요하지 않음) immedeate 출력 (시작 끝내지 < 1 초) 예상대로
public class MyTestCase {
private static Logger logger;
public static void main(String[] args) throws Exception {
System.out.println("Executing MyTestCase...");
doInitstuff1();
doInitstuff2();
System.out.println("Initializing Logger...");
logger = LogManager.getLogger(MyTestCase.class.getName());
System.out.println("Init complete!");
doTheRealStuff();
}
private void doInitstuff1() {
System.out.println("Init Stuff 1...");
}
private void doInitstuff2() {
System.out.println("Init Stuff 2...");
}
private void doTheRealStuff() {
System.out.println("Launching GUI...");
}
}
된다 : 여기서 감소 된 예이다
MyTestCase 실행...
초기화 재료 1 ...
초기화 물건 2 ...
로거 초기화 중 ...
초기화 완료!
시작 GUI ...
나는 runable JAR 또는 (l4j 포함) 포장 .EXE를 만들
및 대상 플랫폼에 설치된 JDK 나 JRE 8 응용 프로그램을 실행 결과는 이것이다 :실행 MyTestCase ...
초기화 물건 1 ...
초기화 물건이 ...
초기화 로거 ... 장치 <에 따라 ~ 10-45초에 대한
응용 프로그램 중지/포장 마차 - 이것은 실제 문제입니다!
초기화 완료!
시작 GUI ...
내가 정확히 JDK 7은 "배치"실행에 대해 컴파일 같은 일이 빨리 이클립스 내에서 같은 출시 할
. 이것은 정말로 이상하고 나는 그것에 대항 할 아무런 단서가 없습니다.CJWizards - 0.22
평민 - 코덱 - 1.10
공유지-IO-2.4
평민 - lang3- : 테스트 목적으로 & 실험에 사용
내 buildpath/라이브러리 3.4
commons-logging-1.2
구아바-20.0
iText를-2.1.7
JDatePicker-1.3.5
JNA-4.3.0
JNA 플랫폼-4.3.0
의 Log4j -api-2.8.1
log4j-core-2.8.1
,sl4j-API-1.7.22
SLF4J-NOP-1.7.22
swingx-모든 1.6.5-1
TableLayout을
vlcj 3.10.1-
zip4j_1.3.2
어떤 원인일까요?
요점을 되풀이하다 :이 문제는 (JDK 7 또는 8을 사용하는 경우에 상관없이) JDK 나 JRE 7과 같은 실행 가능한 단지를 실행
을 발생 시킬수 또는를 exe 인하지 않습니다 이클립스 내에서 실행
JDK 나 JRE (8)과 같은 실행 가능한 항아리 실행
을 발생 시킬수하거나 문제를 exe 인하지 않는 문제는
당신도 필요할 경우를 대비, 내 log4j2.xml 구성 파일의 내용이다 :
<?xml version="1.0" encoding="UTF-8"?>
<configuration status="error">
<appenders>
<File name="MyTestCase.debug" fileName="${sys:user.home}/.mtc/log/MyTestCase.debug.log">
<ThresholdFilter level="ERROR" onMatch="DENY" onMismatch="ACCEPT"/>
<PatternLayout pattern="%d{yyyy-MM-dd | HH:mm:ss.SSS} | [%t] %-5level | %logger{42} | %msg%n"/>
</File>
<Async name="Async.debug">
<appender-ref ref="MyTestCase.debug"/>
</Async>
<File name="MyTestCase.error" fileName="${sys:user.home}/.mtc/log/MyTestCase.error.log">
<ThresholdFilter level="ERROR" onMatch="ACCEPT" onMismatch="DENY"/>
<PatternLayout pattern="%d{yyyy-MM-dd | HH:mm:ss.SSS} | [%t] %-5level | %logger{42} | %msg%n"/>
</File>
<Async name="Async.error">
<appender-ref ref="MyTestCase.error"/>
</Async>
</appenders>
<loggers>
<root level="debug">
<appender-ref ref="Async.debug" level="debug"/>
<appender-ref ref="Async.error" level="error"/>
</root>
</loggers>
</configuration>
org.apache.log4j.Logger.getLogger (MyTestCase.class)를 사용하여 로거를 초기화하려고 시도 했습니까? – GAlexMES
@Ulathar 처음에 2.8.1로 업그레이 드하는 방법에 대해 - 가장 최근에 보았던 것에서 – Eugene
@GAlexMES : "Logger org.apache.logging.log4j.LogManager.getLogger (문자열 이름)"사용 중입니다. – Ulathar