2015-06-02 3 views
2

В нашем проекте используется jmockit 0.999.11 для издевательских объектов для JUnit 4.11 и TestNG 6.9.4 тестовых классов и наборов. Мы используем Maven как инструмент mgmt зависимости, а также для компиляции и выполнения этих тестовых примеров (ОС Windows).jmockit 0.999.11 не распознает jdk 8 в ОС Windows

Недавно мы перенесли наш проект с JDK 7 на JDK 8 (1.8.0.25). С тех пор, когда я пытаюсь выполнить тестовые случаи, JMockit дает мне ошибку говоря

Бег TestSuite

java.lang.IllegalStateException: JMockit требует Java VM 5 или более поздней версии.

Я проверил различные блоги об этом и убедился, что путь класса имеет jmockit jar перед junit jar. Другие инструкции по добавлению jdk tools.jar относятся к Mac OS.

Так что я не могу понять, что еще требуется, чтобы jmockit 0.999.11 смог успешно идентифицировать JDK 8 (u25). Модернизация банкомата JMockit будет нашим последним средством, и мы хотели бы избежать этого как можно больше.

+0

Посмотрите на http://stackoverflow.com/questions/2905735/jmockit-initialization-problem Это сработало для меня. –

ответ

0

Долго и коротко это вам нужно обновить до более поздней версии jmockit. Когда JMockit запускается, он использует этот блок кода в AgentInitialization:

boolean initializeAccordingToJDKVersion() { 
    String jarFilePath = discoverPathToJarFile(); 

    if (Startup.jdk6OrLater) { 
     return new JDK6AgentLoader(jarFilePath).loadAgent(); 
    } else if ("1.5".equals(Startup.javaSpecVersion)) { 
     throw new IllegalStateException("JMockit has not been initialized. Check that your Java 5 VM has been started with the -javaagent:" + 
      jarFilePath + " command line option."); 
    } else { 
     throw new IllegalStateException("JMockit requires a Java 5 VM or later."); 
    } 
} 

И Startup.jdk6OrLater определяет, что с:

static final boolean jdk6OrLater = ("1.6".equals(javaSpecVersion)) || ("1.7".equals(javaSpecVersion)); 

public static boolean isJava6OrLater() { 
    return jdk6OrLater; 
} 

Вы можете увидеть проблему. Я дам им преимущество сомнений в своем выборе, чтобы жестко закодировать версии, превышающие 1,5, но тем не менее это разочаровывает.

Похоже, что 1,8 работает с Java 8. Могут быть и более ранние версии, которые также работают, но 1.8 работал для моих когорт, поэтому я решил придерживаться этого. Альтернативно, переход на Java 7 также должен сделать трюк.

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