Classpath
Между клавишей и знаком равенства есть пробел.Пробел должен быть удален.
char optionString[] = "-Djava.class.path =D:/Program Files/Java/jdk1.8.0_191/lib/";
Значение Classpath
Значение java.class.path должно указывать на базовый каталог, где находятся ваши скомпилированные файлы .class.
Похоже, вы не используете имя пакета, тогда это каталог, в котором находится Main.class, поэтому, вероятно, он должен выглядеть примерно так:
char optionString[] = "-Djava.class.path=c:/Users/name/MyJavaPrograms/classes";
Нарушение прав доступа
SEGV (или исключение 0xC0000005) также преднамеренно генерируется при запуске JVM для проверки определенных функций ЦП / ОС.
см. Этот точный ответ:https://stackoverflow.com/a/36258856
В Visual Studio, когда отображается диалоговое окно исключения, просто отключите его, чтобы оно там сломалось.Это не даст вам увидеть его снова при следующем запуске программы.
Java
Просто для полноты: метод Java должен выглядеть следующим образом:
public class Main {
public static void test(int num) {
System.out.println("Java: test called with '" + num + "'");
}
...
Конфигурация Visual Studio
Необходимо найти файл jvm.dll.В Visual Studio в разделе Свойства конфигурации / Отладка / Среда добавьте PATH =% PATH%;\ bin \ server
Для последующего развертывания вы можете подумать о том, чтобы поместить всю JRE в подпапку вашего приложения и указать на нее относительный путь.
Демо
Наконец короткое демо (здесь добавлено \ n printf("result=%d\n", res);
, чтобы иметь отдельную строку):