Я создаю два пакета с использованием OSGI. Один из них заключается в нахождении определителя заданной матрицы, а другой - для взятия матрицы от пользователя. Я запускаю эти пакеты, используя фреймворк knopflerfish. Когда я принимаю постоянное значение для матрицы и запускаю эти пакеты, они работают правильно. Но когда я пишу код для ввода пользователя и запускаю его в jar-файле в knopflerfish, он дает ошибку в методе nextInt(). Пожалуйста, дайте мне решение этой проблемы.Как мы можем вводить ввод с клавиатуры в комплект OSGI. Я хочу взять матричные элементы от пользователя
Это код для класса Activator, который я использую для создания пакета. Я создаю файл jar этого пакета и запускаю его в knopflerfish. Он показывает ошибку в методе nextInt(). Я не могу получить пользовательский ввод. Если я бегу эту программу самостоятельно в качестве приложения Java он работает, но в рамках Knopflerfish он не работает
package matrixuse;
import java.util.Scanner;
import org.osgi.framework.BundleActivator;
import org.osgi.framework.BundleContext;
import org.osgi.framework.Constants;
import org.osgi.framework.ServiceReference;
import matrixCal.*;
public class Activator implements BundleActivator {
public static BundleContext bc = null;
public void start(BundleContext bc) throws Exception {
System.out.println(bc.getBundle().getHeaders().get(
Constants.BUNDLE_NAME)+ " starting...");
Activator.bc = bc;
ServiceReference reference = bc.getServiceReference
(MatrixCal.class.getName());
MatrixCal service = (MatrixCal)bc.getService(reference);
int rows, cols;
MatrixInput m1=new MatrixInput();
Scanner input = new Scanner(System.in);
System.out.print("Enter number of rows: ");
rows = input.nextInt();
System.out.print("Enter number of columns: ");
cols = input.nextInt();
int array[][] = new int[rows][cols];
System.out.println("Enter elements for Matrix");
for (int i = 0; i < rows; i++) {
for (int j = 0; j < cols; j++) {
array[i][j] = input.nextInt();
}
}
int result = service.determinant(array,array.length);
System.out.println("Calculated Determinant is :"+ result);
bc.ungetService(reference);
}
public void stop(BundleContext bc) throws Exception {
Activator.bc = null;
}
}
Исключение составляет
java.util.NoSuchElementException
at java.util.Scanner.throwFor(Unknown Source)
at java.util.Scanner.next(Unknown Source)
at java.util.Scanner.nextInt(Unknown Source)
at java.util.Scanner.nextInt(Unknown Source)
at matrixuse.Activator.start(Activator.java:24)
at org.knopflerfish.framework.BundleImpl.start0(BundleImpl.java:356)
at org.knopflerfish.framework.BundleThread.run(BundleThread.java:107)
Вы пытались перезагрузить? Это обычно работает для меня. –