начало работы разработчика / HelloWorld.java не компилируется

Я загрузил и установил дистрибутив GraphDB «graphdb-free-8.5.0» (запустите GraphDB как настольную установку). В документации GraphDB в Раздел 6.5 Программирование с GraphDB обсуждается два примера, HelloWorld.java и FamilyRelationsApp.java.

После выполнения mvn install по пути examples/maven-installer, как требует Раздел 6.5, я попытался скомпилировать HelloWorld.java и получил следующие ошибки:

HelloWorld.java:3: error: package com.ontotext.graphdb.example.util does not exist
import com.ontotext.graphdb.example.util.EmbeddedGraphDB;
                                        ^
HelloWorld.java:4: error: package org.eclipse.rdf4j.model does not exist
import org.eclipse.rdf4j.model.Value;
                              ^
HelloWorld.java:5: error: package org.eclipse.rdf4j.query does not exist
import org.eclipse.rdf4j.query.*;
^
HelloWorld.java:6: error: package org.eclipse.rdf4j.repository does not exist
import org.eclipse.rdf4j.repository.RepositoryConnection;
                                   ^
HelloWorld.java:15: error: cannot find symbol
        RepositoryConnection connection = EmbeddedGraphDB.openConnectionToTemporaryRepository("rdfs");
        ^
  symbol:   class RepositoryConnection
  location: class HelloWorld
HelloWorld.java:15: error: cannot find symbol
        RepositoryConnection connection = EmbeddedGraphDB.openConnectionToTemporaryRepository("rdfs");
                                          ^
  symbol:   variable EmbeddedGraphDB
  location: class HelloWorld
HelloWorld.java:29: error: cannot find symbol
            TupleQuery tupleQuery = connection.prepareTupleQuery(QueryLanguage.SPARQL,
            ^
  symbol:   class TupleQuery
  location: class HelloWorld
HelloWorld.java:29: error: cannot find symbol
            TupleQuery tupleQuery = connection.prepareTupleQuery(QueryLanguage.SPARQL,
                                                                 ^
  symbol:   variable QueryLanguage
  location: class HelloWorld
HelloWorld.java:36: error: cannot find symbol
            TupleQueryResult tupleQueryResult = tupleQuery.evaluate();
            ^
  symbol:   class TupleQueryResult
  location: class HelloWorld
HelloWorld.java:39: error: cannot find symbol
                BindingSet bindingSet = tupleQueryResult.next();
                ^
  symbol:   class BindingSet
  location: class HelloWorld
HelloWorld.java:42: error: cannot find symbol
                for (Binding binding : bindingSet) {
                     ^
  symbol:   class Binding
  location: class HelloWorld
HelloWorld.java:45: error: cannot find symbol
                    Value value = binding.getValue();
                    ^
  symbol:   class Value
  location: class HelloWorld
12 errors

Файл pom.xml имеет следующий вид:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.ontotext.graphdb.examples</groupId>
    <artifactId>maven-installer</artifactId>
    <version>1.0.0</version>
    <packaging>pom</packaging>
    <name>Maven installer for GraphDB</name>

    <description>
        This simple pom file can be used to install the GraphDB runtime
        dependency (of the form graphdb-[edition]-runtime-x.y.z.jar) into
        the local Maven repository. Just run "mvn install".
    </description>

    <build>
        <plugins>
            <!-- Install the jar file from the lib directory -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-install-plugin</artifactId>
                <version>2.5.2</version>
                <executions>
                    <execution>
                        <id>default-install</id>
                        <phase>none</phase>
                    </execution>
                    <execution>
                        <id>install-graphdb</id>
                        <phase>install</phase>
                        <goals>
                            <goal>install-file</goal>
                        </goals>
                        <configuration>
                            <file>${project.basedir}/../../lib/graphdb-free-runtime-8.5.0.jar</file>
                            <pomFile>${project.basedir}/graphdb-free-runtime.pom</pomFile>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>
</project>

Как я уже сказал, я сделал mvn install, и у меня была успешная сборка. Тем не менее, я не знаю, как выполнить HelloWorld.java. Каков процесс, которому я должен следовать, чтобы выполнить java-файлы, включенные в дистрибутив GraphDB "graphdb-free-8.5.0"?


person kotheoha    schedule 19.06.2018    source источник
comment
mvn install уже компилирует классы, так какие еще команды вы пытаетесь запустить?   -  person OneCricketeer    schedule 19.06.2018
comment
Моя цель - выполнить HelloWorld.java из командной строки. Когда я набираю «javac HellowWorld.java», он выводит указанное выше. Когда я набираю «java HellowWorld», он выводит «Не удалось найти или загрузить основной класс HelloWorld.java».   -  person kotheoha    schedule 19.06.2018
comment
Проект использует Maven для компиляции вашего проекта. Если вы посмотрите файл pom.xml в своем проекте, вы увидите несколько файлов jar, которые необходимы для успешной компиляции. Просто набрав javac HellowWorld.java недостаточно   -  person Scary Wombat    schedule 19.06.2018
comment
Итак, вы успешно скомпилировали код графа (какой бы он ни был) в банку, и он был помещен в ваш репозиторий Maven. Я понятия не имею, что делает HelloWorld, но полагаю, что он использует файл jar. Я предлагаю вам либо создать новый проект maven, который ссылается на jar, либо скопировать код helloworld в этот проект. В качестве альтернативы просто создайте простой автономный проект с jar-файлом в его сборке и пути к классам.   -  person Scary Wombat    schedule 19.06.2018
comment
Извините, я не умею делать такие вещи. Я только что прочитал документацию GraphDB и ожидал, что без проблем выполню предоставленные в дистрибутиве примеры (например, HelloWorld.java). Я не знаком с maven. Не могли бы вы предоставить полный процесс командной строки о том, как создать проект maven, написать java-файл, который подключается к GraphDB, а затем выполнить его? Кроме того, HelloWorld.java не является моей программой, она находится в папке для начинающих разработчиков в папке с дистрибутивами GraphDB. Итак, я ожидал простого способа выполнять файлы Java в этом дистрибутиве.   -  person kotheoha    schedule 19.06.2018
comment
Код уже скомпилирован, если mvn install не завершился ошибкой. Вам нужно научиться запускать JAR-файл, содержащий ваш класс HelloWorld ... Только так этот код будет работать правильно. После запуска mvn package файл JAR, скорее всего, находится в папке target. Не нужно запускать mvn install   -  person OneCricketeer    schedule 19.06.2018


Ответы (3)


Поскольку GraphDB недоступен в Maven Central (общедоступный репозиторий Maven), вам необходимо установить jar-файл среды выполнения GraphDB в свой локальный репозиторий Maven.

Для этого перейдите в подкаталог examples / maven-installer дистрибутива и запустите:

   mvn install

Хорошо, ты сделал это ... И это должно быть сработало.

(Примечание: эта документация кажется неправильной. Maven Central)

Теперь я предлагаю вам открыть примеры из вашей любимой IDE (Eclipse, Intellij, Netbeans и т. Д.) в качестве проекта Maven и попробовать запустить HelloWorld оттуда.

Вам не обязательно знать, как работает Maven, но это поможет. Во-первых, он помогает управлять внешними библиотеками и компилирует проекты за вас. В принципе, javac HelloWorld.java явно недостаточно. По крайней мере, вам необходимо установить путь к классам (используя файлы GraphDB JAR, которые установил Maven) и правильное имя пакета для классов проекта.

person OneCricketeer    schedule 19.06.2018

Добавьте эти строки после тега <build> внутри pom.xml:

<dependencies>
    <dependency>
        <groupId>com.ontotext.graphdb</groupId>
        <artifactId>graphdb-free-runtime</artifactId>
        <version>8.5.0</version>
    </dependency>
</dependencies>
person Guilherme Iobbi    schedule 19.06.2018
comment
Это не работает. Когда я делаю mvn install, он выводит ошибки! Нераспознанный тег: «зависимости» и тому подобное. - person kotheoha; 19.06.2018

Почему-то вам не хватает зависимостей. Вы уверены, что у вас есть зависимость graphdb-free-8.5.0, объявленная внутри вашего pom.xml?

person Guilherme Iobbi    schedule 19.06.2018
comment
Что такое pom.xml? Извините, я понятия не имею об этом - person kotheoha; 19.06.2018