2015-11-18 2 views
2

Я борюсь с каким-то кодом, который систематически терпит неудачу в jenkins, но, конечно, проходит без проблем на моей машине.null Указатель исключения при проверке на null с == в java

public static FaultException getFaultException(String faultCode, String faultString) { 
    LOGGER.debug("start getFaultException"); 
    Fault fault = new Fault(); 
    fault.setFaultCode(faultCode); 
    fault.setFaultString(faultString); 
    LOGGER.debug("Returning new FaultException"); 
    FaultException fex = new FaultException("Fault exception", fault); 

    LOGGER.debug("fex is ", fex); 

    try { 
     if (fex == null) { 
      LOGGER.debug("getFaultException fex is null"); 
     } 
    }catch(NullPointerException nex) { 
     LOGGER.debug("catched npe ", nex); 
    } 

    LOGGER.debug("fex class is " + fex.getClass().getCanonicalName()); 
    LOGGER.debug("fex built in getFaultException"); 
    return fex; 
} 

Код, который вы видите будет отображаться на Дженкинс перехваченных NPE + нулевой исключением указателя, и будет повторно вызвать NPE на следующей строке. Так что в основном у меня есть npe, проверяя, является ли объект нулевым (строка if (fex == null) является виновником). Однако LOGGER.debug («fex is», fex); строка успешно удалит объект FaultException.

Как это может быть? Машина jenkinks запускает openjdk 1.7.0_85-b01, моя машина - это машина для Windows с 1.7.0_80. Кроме того, класс FaultException представляет собой сгенерированный класс с аннотацией @WebFault, но я сравнил приведенный байт-код на двух машинах и тот же. (кроме путей и тому подобного)

Спасибо, что посмотрели!

UPDATE, файл журнала:

  18-11-15;14:27:37;MessageContentFactory;DEBUG;start getFaultException 
      18-11-15;14:27:37;MessageContentFactory;DEBUG;Returning new FaultException 
      18-11-15;14:27:37;MessageContentFactory;DEBUG;fex is 
      [censored].service.FaultException: Fault exception 
       at [censored].service.operations.common.MessageContentFactory.getFaultException(MessageContentFactory.java:98) 
       at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
       at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 
       at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
       at java.lang.reflect.Method.invoke(Method.java:606) 
       at org.powermock.api.mockito.internal.invocation.MockitoMethodInvocationControl$1.invoke(MockitoMethodInvocationControl.java:242) 
       at org.mockito.internal.invocation.realmethod.FilteredCGLIBProxyRealMethod.invoke(FilteredCGLIBProxyRealMethod.java:27) 
       at org.mockito.internal.invocation.InvocationImpl.callRealMethod(InvocationImpl.java:108) 
       at org.mockito.internal.stubbing.answers.CallsRealMethods.answer(CallsRealMethods.java:36) 
       at org.mockito.internal.stubbing.StubbedInvocationMatcher.answer(StubbedInvocationMatcher.java:34) 
       at org.mockito.internal.handler.MockHandlerImpl.handle(MockHandlerImpl.java:91) 
       at org.powermock.api.mockito.internal.invocation.MockitoMethodInvocationControl.performIntercept(MockitoMethodInvocationControl.java:260) 
       at org.powermock.api.mockito.internal.invocation.MockitoMethodInvocationControl.invoke(MockitoMethodInvocationControl.java:192) 
       at org.powermock.core.MockGateway.doMethodCall(MockGateway.java:105) 
       at org.powermock.core.MockGateway.methodCall(MockGateway.java:60) 
       at [censored].service.operations.common.MessageContentFactory.getFaultException(MessageContentFactory.java) 
       at [censored].service.operations.Tr069Cwmp10PortTypeImpl.getFaultException(Tr069Cwmp10PortTypeImpl.java:301) 
       at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
       at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 
       at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
       at java.lang.reflect.Method.invoke(Method.java:606) 
       at org.powermock.api.mockito.internal.invocation.MockitoMethodInvocationControl$1.invoke(MockitoMethodInvocationControl.java:242) 
       at org.mockito.internal.invocation.realmethod.FilteredCGLIBProxyRealMethod.invoke(FilteredCGLIBProxyRealMethod.java:27) 
       at org.mockito.internal.invocation.InvocationImpl.callRealMethod(InvocationImpl.java:108) 
       at org.mockito.internal.stubbing.answers.CallsRealMethods.answer(CallsRealMethods.java:36) 
       at org.mockito.internal.handler.MockHandlerImpl.handle(MockHandlerImpl.java:93) 
       at org.powermock.api.mockito.internal.invocation.MockitoMethodInvocationControl.performIntercept(MockitoMethodInvocationControl.java:260) 
       at org.powermock.api.mockito.internal.invocation.MockitoMethodInvocationControl.invoke(MockitoMethodInvocationControl.java:192) 
       at org.powermock.core.MockGateway.doMethodCall(MockGateway.java:105) 
       at org.powermock.core.MockGateway.methodCall(MockGateway.java:168) 
       at [censored].service.operations.Tr069Cwmp10PortTypeImpl.getFaultException(Tr069Cwmp10PortTypeImpl.java) 
       at [censored].service.operations.Tr069Cwmp10PortTypeImpl.inform(Tr069Cwmp10PortTypeImpl.java:280) 
       at [censored].service.operations.Tr069Cwmp10PortTypeImpl$$EnhancerByMockitoWithCGLIB$$665825f2.CGLIB$inform$10(<generated>) 
       at [censored].service.operations.Tr069Cwmp10PortTypeImpl$$EnhancerByMockitoWithCGLIB$$665825f2$$FastClassByMockitoWithCGLIB$$cd84789d.invoke(<generated>) 
       at org.mockito.cglib.proxy.MethodProxy.invokeSuper(MethodProxy.java:216) 
       at org.mockito.internal.creation.AbstractMockitoMethodProxy.invokeSuper(AbstractMockitoMethodProxy.java:10) 
       at org.mockito.internal.invocation.realmethod.CGLIBProxyRealMethod.invoke(CGLIBProxyRealMethod.java:22) 
       at org.mockito.internal.invocation.realmethod.FilteredCGLIBProxyRealMethod.invoke(FilteredCGLIBProxyRealMethod.java:27) 
       at org.mockito.internal.invocation.InvocationImpl.callRealMethod(InvocationImpl.java:108) 
       at org.mockito.internal.stubbing.answers.CallsRealMethods.answer(CallsRealMethods.java:36) 
       at org.mockito.internal.handler.MockHandlerImpl.handle(MockHandlerImpl.java:93) 
       at org.mockito.internal.handler.NullResultGuardian.handle(NullResultGuardian.java:29) 
       at org.mockito.internal.handler.InvocationNotifierHandler.handle(InvocationNotifierHandler.java:38) 
       at org.mockito.internal.creation.MethodInterceptorFilter.intercept(MethodInterceptorFilter.java:51) 
       at [censored].service.operations.Tr069Cwmp10PortTypeImpl$$EnhancerByMockitoWithCGLIB$$665825f2.inform(<generated>) 
       at [censored].service.operations.Tr069Cwmp10PortTypeImplTest.executeTestInform(Tr069Cwmp10PortTypeImplTest.java:393) 
       at [censored].service.operations.Tr069Cwmp10PortTypeImplTest.testInformInvalidParams(Tr069Cwmp10PortTypeImplTest.java:500) 
       at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
       at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 
       at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
       at java.lang.reflect.Method.invoke(Method.java:606) 
       at org.junit.internal.runners.TestMethod.invoke(TestMethod.java:68) 
       at org.powermock.modules.junit4.internal.impl.PowerMockJUnit44RunnerDelegateImpl$PowerMockJUnit44MethodRunner.runTestMethod(PowerMockJUnit44RunnerDelegateImpl.java:310) 
       at org.junit.internal.runners.MethodRoadie$2.run(MethodRoadie.java:88) 
       at org.junit.internal.runners.MethodRoadie.runBeforesThenTestThenAfters(MethodRoadie.java:96) 
       at org.powermock.modules.junit4.internal.impl.PowerMockJUnit44RunnerDelegateImpl$PowerMockJUnit44MethodRunner.executeTest(PowerMockJUnit44RunnerDelegateImpl.java:294) 
       at org.powermock.modules.junit4.internal.impl.PowerMockJUnit47RunnerDelegateImpl$PowerMockJUnit47MethodRunner.executeTestInSuper(PowerMockJUnit47RunnerDelegateImpl.java:127) 
       at org.powermock.modules.junit4.internal.impl.PowerMockJUnit47RunnerDelegateImpl$PowerMockJUnit47MethodRunner.executeTest(PowerMockJUnit47RunnerDelegateImpl.java:82) 
       at org.powermock.modules.junit4.internal.impl.PowerMockJUnit44RunnerDelegateImpl$PowerMockJUnit44MethodRunner.runBeforesThenTestThenAfters(PowerMockJUnit44RunnerDelegateImpl.java:282) 
       at org.junit.internal.runners.MethodRoadie.runTest(MethodRoadie.java:86) 
       at org.junit.internal.runners.MethodRoadie.run(MethodRoadie.java:49) 
       at org.powermock.modules.junit4.internal.impl.PowerMockJUnit44RunnerDelegateImpl.invokeTestMethod(PowerMockJUnit44RunnerDelegateImpl.java:207) 
       at org.powermock.modules.junit4.internal.impl.PowerMockJUnit44RunnerDelegateImpl.runMethods(PowerMockJUnit44RunnerDelegateImpl.java:146) 
       at org.powermock.modules.junit4.internal.impl.PowerMockJUnit44RunnerDelegateImpl$1.run(PowerMockJUnit44RunnerDelegateImpl.java:120) 
       at org.junit.internal.runners.ClassRoadie.runUnprotected(ClassRoadie.java:33) 
       at org.junit.internal.runners.ClassRoadie.runProtected(ClassRoadie.java:45) 
       at org.powermock.modules.junit4.internal.impl.PowerMockJUnit44RunnerDelegateImpl.run(PowerMockJUnit44RunnerDelegateImpl.java:118) 
       at org.powermock.modules.junit4.common.internal.impl.JUnit4TestSuiteChunkerImpl.run(JUnit4TestSuiteChunkerImpl.java:101) 
       at org.powermock.modules.junit4.common.internal.impl.AbstractCommonPowerMockRunner.run(AbstractCommonPowerMockRunner.java:53) 
       at org.powermock.modules.junit4.PowerMockRunner.run(PowerMockRunner.java:53) 
       at org.apache.maven.surefire.junit4.JUnit4TestSet.execute(JUnit4TestSet.java:62) 
       at org.apache.maven.surefire.suite.AbstractDirectoryTestSuite.executeTestSet(AbstractDirectoryTestSuite.java:140) 
       at org.apache.maven.surefire.suite.AbstractDirectoryTestSuite.execute(AbstractDirectoryTestSuite.java:127) 
       at org.apache.maven.surefire.Surefire.run(Surefire.java:177) 
       at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
       at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 
       at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
       at java.lang.reflect.Method.invoke(Method.java:606) 
       at org.apache.maven.surefire.booter.SurefireBooter.runSuitesInProcess(SurefireBooter.java:345) 
       at org.apache.maven.surefire.booter.SurefireBooter.main(SurefireBooter.java:1009) 
      18-11-15;14:27:37;MessageContentFactory;DEBUG;catched npe 
      java.lang.NullPointerException 
       at [censored].service.operations.common.MessageContentFactory.getFaultException(MessageContentFactory.java:100) 
       at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
       at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 
       at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
       at java.lang.reflect.Method.invoke(Method.java:606) 
       at org.powermock.api.mockito.internal.invocation.MockitoMethodInvocationControl$1.invoke(MockitoMethodInvocationControl.java:242) 
       at org.mockito.internal.invocation.realmethod.FilteredCGLIBProxyRealMethod.invoke(FilteredCGLIBProxyRealMethod.java:27) 
       at org.mockito.internal.invocation.InvocationImpl.callRealMethod(InvocationImpl.java:108) 
       at org.mockito.internal.stubbing.answers.CallsRealMethods.answer(CallsRealMethods.java:36) 
       at org.mockito.internal.stubbing.StubbedInvocationMatcher.answer(StubbedInvocationMatcher.java:34) 
       at org.mockito.internal.handler.MockHandlerImpl.handle(MockHandlerImpl.java:91) 
       at org.powermock.api.mockito.internal.invocation.MockitoMethodInvocationControl.performIntercept(MockitoMethodInvocationControl.java:260) 
       at org.powermock.api.mockito.internal.invocation.MockitoMethodInvocationControl.invoke(MockitoMethodInvocationControl.java:192) 
       at org.powermock.core.MockGateway.doMethodCall(MockGateway.java:105) 
       at org.powermock.core.MockGateway.methodCall(MockGateway.java:60) 
       at [censored].service.operations.common.MessageContentFactory.getFaultException(MessageContentFactory.java) 
       at [censored].service.operations.Tr069Cwmp10PortTypeImpl.getFaultException(Tr069Cwmp10PortTypeImpl.java:301) 
       at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
       at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 
       at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
       at java.lang.reflect.Method.invoke(Method.java:606) 
       at org.powermock.api.mockito.internal.invocation.MockitoMethodInvocationControl$1.invoke(MockitoMethodInvocationControl.java:242) 
       at org.mockito.internal.invocation.realmethod.FilteredCGLIBProxyRealMethod.invoke(FilteredCGLIBProxyRealMethod.java:27) 
       at org.mockito.internal.invocation.InvocationImpl.callRealMethod(InvocationImpl.java:108) 
       at org.mockito.internal.stubbing.answers.CallsRealMethods.answer(CallsRealMethods.java:36) 
       at org.mockito.internal.handler.MockHandlerImpl.handle(MockHandlerImpl.java:93) 
       at org.powermock.api.mockito.internal.invocation.MockitoMethodInvocationControl.performIntercept(MockitoMethodInvocationControl.java:260) 
       at org.powermock.api.mockito.internal.invocation.MockitoMethodInvocationControl.invoke(MockitoMethodInvocationControl.java:192) 
       at org.powermock.core.MockGateway.doMethodCall(MockGateway.java:105) 
       at org.powermock.core.MockGateway.methodCall(MockGateway.java:168) 
       at [censored].service.operations.Tr069Cwmp10PortTypeImpl.getFaultException(Tr069Cwmp10PortTypeImpl.java) 
       at [censored].service.operations.Tr069Cwmp10PortTypeImpl.inform(Tr069Cwmp10PortTypeImpl.java:280) 
       at [censored].service.operations.Tr069Cwmp10PortTypeImpl$$EnhancerByMockitoWithCGLIB$$665825f2.CGLIB$inform$10(<generated>) 
       at [censored].service.operations.Tr069Cwmp10PortTypeImpl$$EnhancerByMockitoWithCGLIB$$665825f2$$FastClassByMockitoWithCGLIB$$cd84789d.invoke(<generated>) 
       at org.mockito.cglib.proxy.MethodProxy.invokeSuper(MethodProxy.java:216) 
       at org.mockito.internal.creation.AbstractMockitoMethodProxy.invokeSuper(AbstractMockitoMethodProxy.java:10) 
       at org.mockito.internal.invocation.realmethod.CGLIBProxyRealMethod.invoke(CGLIBProxyRealMethod.java:22) 
       at org.mockito.internal.invocation.realmethod.FilteredCGLIBProxyRealMethod.invoke(FilteredCGLIBProxyRealMethod.java:27) 
       at org.mockito.internal.invocation.InvocationImpl.callRealMethod(InvocationImpl.java:108) 
       at org.mockito.internal.stubbing.answers.CallsRealMethods.answer(CallsRealMethods.java:36) 
       at org.mockito.internal.handler.MockHandlerImpl.handle(MockHandlerImpl.java:93) 
       at org.mockito.internal.handler.NullResultGuardian.handle(NullResultGuardian.java:29) 
       at org.mockito.internal.handler.InvocationNotifierHandler.handle(InvocationNotifierHandler.java:38) 
       at org.mockito.internal.creation.MethodInterceptorFilter.intercept(MethodInterceptorFilter.java:51) 
       at [censored].service.operations.Tr069Cwmp10PortTypeImpl$$EnhancerByMockitoWithCGLIB$$665825f2.inform(<generated>) 
       at [censored].service.operations.Tr069Cwmp10PortTypeImplTest.executeTestInform(Tr069Cwmp10PortTypeImplTest.java:393) 
       at [censored].service.operations.Tr069Cwmp10PortTypeImplTest.testInformInvalidParams(Tr069Cwmp10PortTypeImplTest.java:500) 
       at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
       at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 
       at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
       at java.lang.reflect.Method.invoke(Method.java:606) 
       at org.junit.internal.runners.TestMethod.invoke(TestMethod.java:68) 
       at org.powermock.modules.junit4.internal.impl.PowerMockJUnit44RunnerDelegateImpl$PowerMockJUnit44MethodRunner.runTestMethod(PowerMockJUnit44RunnerDelegateImpl.java:310) 
       at org.junit.internal.runners.MethodRoadie$2.run(MethodRoadie.java:88) 
       at org.junit.internal.runners.MethodRoadie.runBeforesThenTestThenAfters(MethodRoadie.java:96) 
       at org.powermock.modules.junit4.internal.impl.PowerMockJUnit44RunnerDelegateImpl$PowerMockJUnit44MethodRunner.executeTest(PowerMockJUnit44RunnerDelegateImpl.java:294) 
       at org.powermock.modules.junit4.internal.impl.PowerMockJUnit47RunnerDelegateImpl$PowerMockJUnit47MethodRunner.executeTestInSuper(PowerMockJUnit47RunnerDelegateImpl.java:127) 
       at org.powermock.modules.junit4.internal.impl.PowerMockJUnit47RunnerDelegateImpl$PowerMockJUnit47MethodRunner.executeTest(PowerMockJUnit47RunnerDelegateImpl.java:82) 
       at org.powermock.modules.junit4.internal.impl.PowerMockJUnit44RunnerDelegateImpl$PowerMockJUnit44MethodRunner.runBeforesThenTestThenAfters(PowerMockJUnit44RunnerDelegateImpl.java:282) 
       at org.junit.internal.runners.MethodRoadie.runTest(MethodRoadie.java:86) 
       at org.junit.internal.runners.MethodRoadie.run(MethodRoadie.java:49) 
       at org.powermock.modules.junit4.internal.impl.PowerMockJUnit44RunnerDelegateImpl.invokeTestMethod(PowerMockJUnit44RunnerDelegateImpl.java:207) 
       at org.powermock.modules.junit4.internal.impl.PowerMockJUnit44RunnerDelegateImpl.runMethods(PowerMockJUnit44RunnerDelegateImpl.java:146) 
       at org.powermock.modules.junit4.internal.impl.PowerMockJUnit44RunnerDelegateImpl$1.run(PowerMockJUnit44RunnerDelegateImpl.java:120) 
       at org.junit.internal.runners.ClassRoadie.runUnprotected(ClassRoadie.java:33) 
       at org.junit.internal.runners.ClassRoadie.runProtected(ClassRoadie.java:45) 
       at org.powermock.modules.junit4.internal.impl.PowerMockJUnit44RunnerDelegateImpl.run(PowerMockJUnit44RunnerDelegateImpl.java:118) 
       at org.powermock.modules.junit4.common.internal.impl.JUnit4TestSuiteChunkerImpl.run(JUnit4TestSuiteChunkerImpl.java:101) 
       at org.powermock.modules.junit4.common.internal.impl.AbstractCommonPowerMockRunner.run(AbstractCommonPowerMockRunner.java:53) 
       at org.powermock.modules.junit4.PowerMockRunner.run(PowerMockRunner.java:53) 
       at org.apache.maven.surefire.junit4.JUnit4TestSet.execute(JUnit4TestSet.java:62) 
       at org.apache.maven.surefire.suite.AbstractDirectoryTestSuite.executeTestSet(AbstractDirectoryTestSuite.java:140) 
       at org.apache.maven.surefire.suite.AbstractDirectoryTestSuite.execute(AbstractDirectoryTestSuite.java:127) 
       at org.apache.maven.surefire.Surefire.run(Surefire.java:177) 
       at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
       at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 
       at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
       at java.lang.reflect.Method.invoke(Method.java:606) 
       at org.apache.maven.surefire.booter.SurefireBooter.runSuitesInProcess(SurefireBooter.java:345) 
       at org.apache.maven.surefire.booter.SurefireBooter.main(SurefireBooter.java:1009) 

UPDATE 2: FaultException.java файл:

@WebFault(name = "Fault", targetNamespace = "urn:dslforum-org:cwmp-1-0") 
public class FaultException extends Exception { 

private [censored].Fault fault; 

public FaultException() { 
    super(); 
} 

public FaultException(String message) { 
    super(message); 
} 

public FaultException(String message, Throwable cause) { 
    super(message, cause); 
} 

public FaultException(String message, [censored].Fault fault) { 
    super(message); 
    this.fault = fault; 
} 

public FaultException(String message, [censored].Fault fault, Throwable cause) { 
    super(message, cause); 
    this.fault = fault; 
} 

public [censored].Fault getFaultInfo() { 
    return this.fault; 
} 

}

+0

Вы отправили точный код? Блок try не должен бросать NPE, за исключением того, что «LOGGER» имеет значение NULL, что не может быть истинным, поскольку вы получите NPE прямо перед блоком try. – Thomas

+0

Я сильно подозреваю, что то, что работает на вашем компьютере, отличается от того, что работает на Дженкинсе. То, что вы показываете, не может выбрасывать NPE, за исключением случаев, когда LOGGER имеет значение NULL. – wero

+0

Да, я скопировал код. Я тоже не могу этого понять. Линия try catch действительно вызывает NPE, и регистратор определенно не является нулевым, так как он отображает все строки журнала. – aciobanu

ответ

2

что вы ожидаете? вы используете fex после вашего null check Normaly:

try { 
    if (fex == null) { 
     LOGGER.debug("getFaultException fex is null"); 
    } 
}catch(NullPointerException nex) { 
    LOGGER.debug("catched npe ", nex); 
} 

HERE --> LOGGER.debug("fex class is " + fex.getClass().getCanonicalName()); 

, который должен приводит к NPE потому fex может быть только ноль, если ваше первое условие было верно.

Это было бы больше смысла:

if (fex == null) { 
     LOGGER.debug("getFaultException fex is null"); 
    }else{ 
     LOGGER.debug("fex class is " + fex.getClass().getCanonicalName()); 
     LOGGER.debug("fex built in getFaultException"); 
    } 
    return fex; 

кстати. try catch NPE здесь не нужен. это не может быть thrown. Будет ли LOGGERnull первой строкой вашего метода будет кидать NPE.

+0

fex инициализируется новым объектом, когда он объявлен. Почему это должно быть null? – wero

+0

из выставленного вопроса не может быть пустым. Я думаю, что есть разница между сообщением и показанным кодом. –

+0

, и все же это так ... посмотрите на дамп стека, вы увидите, что зацепившаяся часть npe выполняется/отображается. – aciobanu

Смежные вопросы