Я использую gradle в настольном приложении Java.
IDE - это NetBeans, и я хотел сгенерировать некоторый автоматизированный JSON из моих классов Java.
Я реализовал 3 класса (только POJO) и попытался импортировать com.github.reinert, name: 'jjschema', version: '1.11' через gradle.
jjschema будет печатать JSON-эквиваленты java-объектов.
Моя версия gradle - 4.4 & Java C: \ Program Files \ Java \ jdk1.8.0_171 (оба подтверждаются проверкой пути и выдачей команд cmd gradle -version)
C: \ X \ Documents \ NetBeansProjects \ xMessage> версия-gradle
Gradle 4.4
Время сборки: 2017-12-06 09:05:06 UTC
Редакция: cf7821a6f79f8e2a598df21780e3ff7ce8db2b82
Groovy: 2.4.12
Ant: Apache Ant (TM) версии 1.9.9, скомпилирован 2 февраля 2017 г.
JVM: 1.8.0_171 (Oracle Corporation 25.171-b11)
ОС: Windows 10 10.0 amd64
Однако gradle НЕ разрешает классы и НЕ загружает зависимости.
Вот мой файл Gradle:
apply plugin: 'java'
sourceCompatibility = '1.8'
[compileJava, compileTestJava]*.options*.encoding = 'UTF-8'
// NetBeans will automatically add "run" and "debug" tasks relying on the
// "mainClass" property. You may however define the property prior executing
// tasks by passing a "-PmainClass=<QUALIFIED_CLASS_NAME>" argument.
//
// Note however, that you may define your own "run" and "debug" task if you
// prefer. In this case NetBeans will not add these tasks but you may rely on
// your own implementation.
if (!hasProperty('mainClass')) {
ext.mainClass = ''
}
repositories {
mavenCentral()
// You may define additional repositories, or even remove "mavenCentral()".
// Read more about repositories here:
// http://www.gradle.org/docs/current/userguide/dependency_management.html#sec:repositories
}
dependencies {
// TODO: Add dependencies here ...
// You can read more about how to add dependency here:
// http://www.gradle.org/docs/current/userguide/dependency_management.html#sec:how_to_declare_your_dependencies
//I also tried compile group: 'com.github.reinert', name: 'jjschema', version: '1.11'
implementation group: 'com.github.reinert', name: 'jjschema', version: '1.11'
}
Вот мои POJO, в порядке MobileDevice:
package x_mqtt_message;
import java.util.ArrayList;
import java.util.List;
public class MobileDevice {
//most likely a phone number tied to the device if available or other id
private String softwareId;
//device's hardwareId, is import if the user changes the phone or swaps SIM cards, we can still identify the hardware for tracking/diagnostics/debugging
private String hardwareId;
//services running on the device
private List<xService> services = new ArrayList<xService>();
public String getSoftwareId() {
return softwareId;
}
public void setSoftwareId(String softwareId) {
this.softwareId = softwareId;
}
public String getHardwareId() {
return hardwareId;
}
public void setHardwareId(String hardwareId) {
this.hardwareId = hardwareId;
}
public List<xService> getServices() {
return services;
}
public void setServices(List<xService> services) {
this.services = services;
}
Класс xSensor:
package x_mqtt_message;
import com.github.reinert.jjschema.Attributes;
@Attributes(title="xSensor", description="An external sensor such as ECG,temp,Accelerometer,Pulse-oximete,Barometric Pressure,etc...")
public class xSensor {
//unique id of the sensor
@Attributes(required=true, description="unique id of the sensor")
private String id;
//type such as ECG,body_temperature,accelerometer,pulse-oximeter,barometric_pressure
@Attributes(required=true, description="type such as ECG,body_temperature,accelerometer,pulse-oximeter,barometric_pressure")
private String type;
@Attributes(minItems=0,uniqueItems=false)
private Object [] data;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
public Object[] getData() {
return data;
}
public void setData(Object[] data) {
this.data = data;
}
}
класс xService:
package x_mqtt_message;
import com.github.reinert.jjschema.Attributes;
import java.util.HashSet;
@Attributes(title="xService", description="A background process that send & receives data via several protocol")
public class xService {
//service examples: mqtt_service, gps_service, compass_service, bluetooth_service, etc...
@Attributes(required=true, description="mqtt_service, gps_service, compass_service, bluetooth_service, etc...")
private String serviceName;
//is the service 100% up & running yes=true no=false
@Attributes(required=true, description="is the service 100% up & running yes=true no=false")
private Boolean serviceStatus= false;
@Attributes(minItems=0,uniqueItems=true)
private HashSet<xSensor> listOfSensors = new HashSet<xSensor>();
public String getServiceName() {
return serviceName;
}
public void setServiceName(String serviceName) {
this.serviceName = serviceName;
}
}
Основная запись:
package x_mqtt_message;
public class x_mqtt_message {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
// These packages are NOT being found!!!!
JsonSchemaFactory schemaFactory = new JsonSchemaV4Factory();
schemaFactory.setAutoPutDollarSchema(true);
JsonNode productSchema = schemaFactory.createSchema(MobileDevice.class);
System.out.println(productSchema);
}
}
При сборке через IDE я получаю:
Выполнение: чистая сборка
Аргументы: [-c, C: \ x \ Documents \ NetBeansProjects \ NgfrMessage \ settings.gradle]
: чистый
C: \ x \ Documents \ NetBeansProjects \ NgfrMessage \ src \ main \ java \ ngfr_mqtt_message \ Ngfr_mqtt_message.java: 17: ошибка: не удается найти символ
JsonSchemaFactory schemaFactory = new JsonSchemaV4Factory ();
^
символ: класс JsonSchemaFactory
расположение: класс Ngfr_mqtt_message
C: \ x \ Documents \ NetBeansProjects \ NgfrMessage \ src \ main \ java \ ngfr_mqtt_message \ Ngfr_mqtt_message.java: 17: ошибка: не удается найти символ
JsonSchemaFactory schemaFactory = new JsonSchemaV4Factory ();
^
символ: класс JsonSchemaV4Factory
расположение: класс Ngfr_mqtt_message
C: \ x \ Documents \ NetBeansProjects \ NgfrMessage \ src \ main \ java \ ngfr_mqtt_message \ Ngfr_mqtt_message.java: 19: ошибка: не удается найти символ
JsonNode productSchema = schemaFactory.createSchema (MobileDevice.class);
^
символ: класс JsonNode
расположение: класс Ngfr_mqtt_message
3 ошибки
: compileJava FAILED
FAILURE: сборка не удалась, исключение.
Что пошло не так:
Не удалось выполнить задачу ': compileJava'.
Компиляция не удалась; подробности смотрите в сообщении об ошибке компилятора.
Попытка:
Запустите с параметром --stacktrace, чтобы получить трассировку стека. Запустите с параметром --info или --debug, чтобы получить больше вывода журнала. Запустите --scan, чтобы получить полную информацию.
При выдаче команды через cmd> gradle build --debug
Соответствующий фрагмент:
17: 33: 42.834 [DEBUG] [org.gradle.internal.progress.DefaultBuildOperationExecutor] Завершение операции сборки 'Task: compileJava'
17: 33: 42.834 [null] [org.gradle.internal.progress.DefaultBuildOperationExecutor]
17: 33: 42.834 [DEBUG] [org.gradle.internal.progress.DefaultBuildOperationExecutor] Операция сборки 'Task: compileJava' завершена
17: 33: 42.835 [INFO] [org.gradle.execution.taskgraph.DefaultTaskPlanExecutor]: compileJava (Поток [работник задачи для ':', 5, main]) завершен. Заняло 0,267 с.
17: 33: 42.835 [DEBUG] [org.gradle.internal.work.DefaultWorkerLeaseService] Аренда рабочей среды root.1.2 завершена (1 рабочий используется)
17: 33: 42.835 [DEBUG] [org.gradle.internal.resources.AbstractTrackedResourceLock] Рабочий для ':': снята блокировка root.1.2
17: 33: 42.835 [DEBUG] [org.gradle.internal.resources.AbstractTrackedResourceLock] Рабочий для ':': снял блокировку на:
17: 33: 42.836 [DEBUG] [org.gradle.execution.taskgraph.DefaultTaskPlanExecutor] Задание [Поток [Задача для ':' Поток 6,5, основной]] завершено, занято: 0,0 с, время простоя: 0,277 с17: 33: 42.836 [DEBUG] [org.gradle.execution.taskgraph.DefaultTaskPlanExecutor] Работник задачи [Поток [Работник задачи для ':' Поток 7,5, основной]] завершен, занят: 0,0 с, бездействует: 0,278 с 17: 33: 42.837 [DEBUG] [org.gradle.execution.taskgraph.DefaultTaskPlanExecutor] Задание работника [Поток [Работник демона Поток 10,5, основной]] завершено, занято: 0,0 с, бездействие: 0,278 с 17: 33: 42,836 [DEBUG] [org.gradle.execution.taskgraph.DefaultTaskPlanExecutor] Работник задачи [Поток [Работник задачи для ':' Поток 5,5, основной]] завершен, занят: 0,0 с, бездействующий: 0,277 с 17: 33: 42,837 [DEBUG] [org.gradle.execution.taskgraph.DefaultTaskPlanExecutor] Работник задачи [Поток [Работник задачи для ':', 5, main]] завершен, занят: 0,267 секунды, бездействует: 0,012 секунды 17: 33: 42.837 [DEBUG] [org.gradle.execution.taskgraph.DefaultTaskPlanExecutor] Задание работника [Поток [Задание работника для ':' Поток 2,5, основной]] завершено, занято: 0,0 с, бездействует: 0,278 с 17: 33: 42.836 [ОТЛАДКА] [орг.gradle.execution.taskgraph.DefaultTaskPlanExecutor] Работник задачи [Тема [Работник задачи для ':'Поток 3,5, основной]] завершено, занято: 0,0 с, время простоя: 0,278 с 17: 33: 42.836 [DEBUG] [org.gradle.execution.taskgraph.DefaultTaskPlanExecutor] Работник задачи [Поток [Работник задачи для темы:: '4,5, main]] готово, занято: 0,0 с, бездействует: 0,278 с 17: 33: 42.839 [DEBUG] [org.gradle.internal.progress.DefaultBuildOperationExecutor] Завершение операции сборки 'Выполнить задачи' 17: 33: 42.844 [ОШИБКА] [org.gradle.internal.buildevents.BuildExceptionReporter] 17: 33: 42.844 [ОШИБКА] [org.gradle.internal.buildevents.BuildExceptionReporter] FAILURE: сборка завершилась с исключением.17: 33: 42.845 [ОШИБКА] [org.gradle.internal.buildevents.BuildExceptionReporter] 17: 33: 42.845 [ОШИБКА] [org.gradle.internal.buildevents.BuildExceptionReporter] * Что пошло не так: 17: 33: 42.845 [ОШИБКА] [org.gradle.internal.buildevents.BuildExceptionReporter] Не удалось выполнить задачу «compileJava».17: 33: 42.845 [ОШИБКА] [org.gradle.internal.buildevents.BuildExceptionReporter]> Ошибка компиляции;см. вывод ошибки компилятора для деталей.17: 33: 42.845 [ОШИБКА] [org.gradle.internal.buildevents.BuildExceptionReporter] 17: 33: 42.845 [ОШИБКА] [org.gradle.internal.buildevents.BuildExceptionReporter] * Попробуйте: 17: 33: 42.845 [ОШИБКА] [org.gradle.internal.buildevents.BuildExceptionReporter] Запустите с параметром --stacktrace, чтобы получить трассировку стека.Запустите с --scan, чтобы получить полное представление.17: 33: 42.845 [ОШИБКА] [org.gradle.internal.buildevents.BuildExceptionReporter] 17: 33: 42.845 [ОШИБКА] [org.gradle.internal.buildevents.BuildExceptionReporter] * Получите дополнительную помощь по телефону https://help.gradle.org 17: 33: 42.845 [ОШИБКА] [org.gradle.internal.buildevents.BuildResultLogger] 17: 33: 42.845 [ОШИБКА] [org.gradle.internal.buildevents.BuildResultLogger] СБОЙ СТРОИТЬ за 4 с
Когда я закомментировал код в своем основном классе, проект успешно строится, поэтому нет проблем с настройкой gradle или java, я просто не могу получить пакеты / зависимости jjschema gradle для разрешения / загрузки через graddle в проекте?
Спасибо