SCPSolver с Java nullPointerException. Работоспособный пример

1

Я пытаюсь использовать некоторые инструменты линейного программирования с Java. Я решил изучить SCPSolver, потому что он поставляется с документацией.

Поэтому я попытался запустить пример, как показано на домашней странице SCPSolver: пример интерфейса с низким интерфейсом

public class SCPSolverDemo {
  public static void main(String ag[]){
    LinearProgram lp = new LinearProgram(new double[]{5.0,10.0}); 
    lp.addConstraint(new LinearBiggerThanEqualsConstraint(new double[]{3.0,1.0}, 8.0, "c1")); 
    lp.addConstraint(new LinearBiggerThanEqualsConstraint(new double[]{0.0,4.0}, 4.0, "c2")); 
    lp.addConstraint(new LinearSmallerThanEqualsConstraint(new double[]{2.0,0.0}, 2.0, "c3")); 
    lp.setMinProblem(true); 
    LinearProgramSolver solver  = SolverFactory.newDefault();
    double[] sol = solver.solve(lp);
    System.out.println(Arrays.toString(sol)); //line 23
  }
}

Когда я запустил его, я получаю сообщение об ошибке

Exception in thread "main" java.lang.NullPointerException
at drafts.SCPSolverDemo.main(SCPSolverDemo.java:23)

Я понял, что SolverFactory.newDefault(); возвращает нуль. Документация

Ищет поставщика услуг LinearProgramSolver и возвращает первый найденный экземпляр. Если служба не найдена, она выводит трассировку стека на stderr и возвращает значение null. Когда этот метод сначала вызывается, он инициализирует ServiceLoader, который находит доступные службы из пути к классам. Последующие вызовы используют результат этой первой инициализации. Поэтому, если в момент первого вызова нет доступных услуг, для остальной части программы не будет доступных сервисов. Будущие реализации могут игнорировать эту проблему.

но я не знаю, что делать, чтобы исправить эту проблему. В этом пункте я хотел бы помочь. Я не могу много понять из существующего примера, и я не знаю, что делать.

Может кто-нибудь, пожалуйста, дайте мне примерный пример, чтобы понять, что происходит? заранее спасибо

  • 0
    что такое пакет (импорт) SolverFactory?
  • 0
    импорт scpsolver.lpsolver.SolverFactory;
Показать ещё 5 комментариев
Теги:
linear-programming
scpsolver

2 ответа

1

Если в вашей системе установлено несколько JDK. На IntelliJ убедитесь, что вы выбрали правильный SDK для версии x86 JDK. Его легче отслеживать, если вы назовете свои SDK в "Настройки платформы" → SDK

Изображение 174551

0

У меня такая же проблема, вам нужно установить JDK7 x86, а затем она работает. Протестировано на IntelliJ с помощью jdk-7u79-windows-i586.

  • 0
    Я установил JDK7, но получаю то же исключение

Ещё вопросы

Сообщество Overcoder
Наверх
Меню