2016-10-16 2 views
1

Когда я последовали за учебниками Kurento, чтобы запустить пример Java - Repository, который сначала должен установить сервер репозитория kurento, я столкнулся с некоторыми проблемами.Не удается запустить сервер репозитория kurento

После инструкции по установке сервера Kurento Repository, в последнем шаге, я запускаю сервер на уровне пользователя с помощью команды:

$ cd kurento-repository-server-x.y.z 
$ ./bin/start.sh 

Unluckily, он показывает

$ bash ./start.sh 
========================================================================= 

    Kurento Repository Bootstrap Environment 

    KREPO_BINARY: /home/lcrc/kurento-java/kurento-repository/kurento-repository-server/target/kurento-repository-server-6.6.1-SNAPSHOT/lib/kurento-repo.jar 

    JAVA: /usr/lib/jvm/jdk1.7.0_80/bin/java 

    JAVA_OPTS: -server -XX:+UseCompressedOops -XX:+TieredCompilation 

    KREPO_OPTS: -DconfigFilePath=/home/lcrc/kurento-java/kurento-repository/kurento-repository-server/target/kurento-repository-server-6.6.1-SNAPSHOT/config/kurento-repo.conf.json -Dkurento-repo.log.file=/home/lcrc/kurento-java/kurento-repository/kurento-repository-server/target/kurento-repository-server-6.6.1-SNAPSHOT/logs/kurento-repo.log -Dlogging.config=/home/lcrc/kurento-java/kurento-repository/kurento-repository-server/target/kurento-repository-server-6.6.1-SNAPSHOT/config/kurento-repo-log4j.properties -Dlog4j.configuration=/home/lcrc/kurento-java/kurento-repository/kurento-repository-server/target/kurento-repository-server-6.6.1-SNAPSHOT/config/kurento-repo-log4j.properties 

========================================================================= 

no main manifest attribute, in /home/lcrc/kurento-java/kurento-repository/kurento-repository-server/target/kurento-repository-server-6.6.1-SNAPSHOT/lib/kurento-repo.jar 

ОК, он может не найти класс, который включает в себя метод main.

Поэтому я изменил последнюю команду start.sh из

exec $JAVA $JAVA_OPTS $KREPO_OPTS -jar $KREPO_BINARY 

в

exec $JAVA $JAVA_OPTS $KREPO_OPTS -cp $KREPO_BINARY org.kurento.repository.KurentoRepositoryServerApp 

Я уверен, что org.kurento.repository.KurentoRepositoryServerApp включает в себя main метод после того, как я просмотреть исходный код.

Однако показать другую ошибку:

$ bash ./start.sh 
========================================================================= 

    Kurento Repository Bootstrap Environment 

    KREPO_BINARY: /home/lcrc/kurento-java/kurento-repository/kurento-repository-server/target/kurento-repository-server-6.6.1-SNAPSHOT/lib/kurento-repo.jar 

    JAVA: /usr/lib/jvm/jdk1.7.0_80/bin/java 

    JAVA_OPTS: -server -XX:+UseCompressedOops -XX:+TieredCompilation 

    KREPO_OPTS: -DconfigFilePath=/home/lcrc/kurento-java/kurento-repository/kurento-repository-server/target/kurento-repository-server-6.6.1-SNAPSHOT/config/kurento-repo.conf.json -Dkurento-repo.log.file=/home/lcrc/kurento-java/kurento-repository/kurento-repository-server/target/kurento-repository-server-6.6.1-SNAPSHOT/logs/kurento-repo.log -Dlogging.config=/home/lcrc/kurento-java/kurento-repository/kurento-repository-server/target/kurento-repository-server-6.6.1-SNAPSHOT/config/kurento-repo-log4j.properties -Dlog4j.configuration=/home/lcrc/kurento-java/kurento-repository/kurento-repository-server/target/kurento-repository-server-6.6.1-SNAPSHOT/config/kurento-repo-log4j.properties 

========================================================================= 

Exception in thread "main" java.lang.NoClassDefFoundError: javax/servlet/Servlet 
    at java.lang.Class.getDeclaredMethods0(Native Method) 
    at java.lang.Class.privateGetDeclaredMethods(Class.java:2625) 
    at java.lang.Class.getMethod0(Class.java:2866) 
    at java.lang.Class.getMethod(Class.java:1676) 
    at sun.launcher.LauncherHelper.getMainMethod(LauncherHelper.java:494) 
    at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:486) 
Caused by: java.lang.ClassNotFoundException: javax.servlet.Servlet 
    at java.net.URLClassLoader$1.run(URLClassLoader.java:366) 
    at java.net.URLClassLoader$1.run(URLClassLoader.java:355) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at java.net.URLClassLoader.findClass(URLClassLoader.java:354) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:425) 
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:358) 
    ... 6 more 

Как это исправить?

ответ

3

Не знаете, с каким тегом вы работаете с репетитором kurento-java, но я работаю с текущим мастером (6.6.2-SNAPSHOT).

Существовали две вещи, которые я сделал, чтобы получить эту работу:

1.) Вместо того, чтобы поставлять, где найти главное, удалить ссылку MainClass в файле pom.xml и пусть spring-boot-maven-plugin делать свою магию. Перейдите в раздел плагина и удалите конфигурацию для spring-boot-maven-plugin.

<plugin> 
    <groupId>org.springframework.boot</groupId> 
    <artifactId>spring-boot-maven-plugin</artifactId> 
    <!-- REMOVE CONFIGURATION BEGIN --> 
    <!-- <configuration> 
      <mainClass>${start-class}</mainClass> 
      <layout>ZIP</layout> 
      <classifier>exec</classifier> 
    </configuration> --> 
    <!-- REMOVE CONFIGURATION END --> 
    <executions> 
      <execution> 
        <goals> 
          <goal>repackage</goal> 
        </goals> 
      </execution> 
    </executions> 
</plugin> 

2.) После этого происходит столкновение библиотеки журналов. Так исключить spring-boot-starter-logging, который получает включен с spring-boot-starter-web

<dependency> 
    <groupId>org.springframework.boot</groupId> 
    <artifactId>spring-boot-starter-web</artifactId> 
     <!-- ADD EXCLUSION BEGIN --> 
     <exclusions> 
      <exclusion> 
       <groupId>org.springframework.boot</groupId> 
       <artifactId>spring-boot-starter-logging</artifactId> 
      </exclusion> 
     </exclusions> 
     <!-- ADD EXCLUSION END --> 
</dependency> 

Тогда, вы не должны изменять start.sh сценарий вообще.

+0

THX, я попробую его –

+0

Работает точно так же, как описано для последнего тега (еще 6.6.2). – Nicholi