3
votes

Im using gradle in a Java desktop app.

The IDE is NetBeans & i wanted to generate some automated JSON from my Java classes.

I implemented the 3 classes(just POJOs) & attempted to import 'com.github.reinert', name: 'jjschema', version: '1.11' via gradle.

jjschema will print JSON equivalents of the java objects.

My gradle version is 4.4 & Java C:\Program Files\Java\jdk1.8.0_171 (Both are confirmed by checking the path & issuing cmd commands gradle -version)

C:\X\Documents\NetBeansProjects\xMessage>gradle -version


Gradle 4.4

Build time: 2017-12-06 09:05:06 UTC Revision: cf7821a6f79f8e2a598df21780e3ff7ce8db2b82

Groovy: 2.4.12 Ant: Apache Ant(TM) version 1.9.9 compiled on February 2 2017 JVM: 1.8.0_171 (Oracle Corporation 25.171-b11) OS: Windows 10 10.0 amd64

However gradle is NOT resolving the classes & NOT downloading the dependencies.

Here is my gradle file:

  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'
    }

Here are my POJO's, in order 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;
    }

class 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;
    }

}

class 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;
    }


}

The main entry:

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);
    }

}

When build via the IDE im getting:

Executing: gradle clean build Arguments: [-c, C:\x\Documents\NetBeansProjects\NgfrMessage\settings.gradle]

:clean C:\x\Documents\NetBeansProjects\NgfrMessage\src\main\java\ngfr_mqtt_message\Ngfr_mqtt_message.java:17: error: cannot find symbol JsonSchemaFactory schemaFactory = new JsonSchemaV4Factory(); ^ symbol: class JsonSchemaFactory location: class Ngfr_mqtt_message C:\x\Documents\NetBeansProjects\NgfrMessage\src\main\java\ngfr_mqtt_message\Ngfr_mqtt_message.java:17: error: cannot find symbol JsonSchemaFactory schemaFactory = new JsonSchemaV4Factory(); ^ symbol: class JsonSchemaV4Factory location: class Ngfr_mqtt_message C:\x\Documents\NetBeansProjects\NgfrMessage\src\main\java\ngfr_mqtt_message\Ngfr_mqtt_message.java:19: error: cannot find symbol JsonNode productSchema = schemaFactory.createSchema(MobileDevice.class); ^ symbol: class JsonNode location: class Ngfr_mqtt_message 3 errors :compileJava FAILED

FAILURE: Build failed with an exception.

  • What went wrong: Execution failed for task ':compileJava'.

    Compilation failed; see the compiler error output for details.

  • Try: Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.

When issuing command via cmd > gradle build --debug Relevant snippet:

17:33:42.834 [DEBUG] [org.gradle.internal.progress.DefaultBuildOperationExecutor] Completing Build operation 'Task :compileJava' 17:33:42.834 [null] [org.gradle.internal.progress.DefaultBuildOperationExecutor] 17:33:42.834 [DEBUG] [org.gradle.internal.progress.DefaultBuildOperationExecutor] Build operation 'Task :compileJava' completed 17:33:42.835 [INFO] [org.gradle.execution.taskgraph.DefaultTaskPlanExecutor] :compileJava (Thread[Task worker for ':',5,main]) completed. Took 0.267 secs. 17:33:42.835 [DEBUG] [org.gradle.internal.work.DefaultWorkerLeaseService] Worker lease root.1.2 completed (1 worker(s) in use) 17:33:42.835 [DEBUG] [org.gradle.internal.resources.AbstractTrackedResourceLock] Task worker for ':': released lock on root.1.2 17:33:42.835 [DEBUG] [org.gradle.internal.resources.AbstractTrackedResourceLock] Task worker for ':': released lock on : 17:33:42.836 [DEBUG] [org.gradle.execution.taskgraph.DefaultTaskPlanExecutor] Task worker [Thread[Task worker for ':' Thread 6,5,main]] finished, busy: 0.0 secs, idle: 0.277 secs 17:33:42.836 [DEBUG] [org.gradle.execution.taskgraph.DefaultTaskPlanExecutor] Task worker [Thread[Task worker for ':' Thread 7,5,main]] finished, busy: 0.0 secs, idle: 0.278 secs 17:33:42.837 [DEBUG] [org.gradle.execution.taskgraph.DefaultTaskPlanExecutor] Task worker [Thread[Daemon worker Thread 10,5,main]] finished, busy: 0.0 secs, idle: 0.278 secs 17:33:42.836 [DEBUG] [org.gradle.execution.taskgraph.DefaultTaskPlanExecutor] Task worker [Thread[Task worker for ':' Thread 5,5,main]] finished, busy: 0.0 secs, idle: 0.277 secs 17:33:42.837 [DEBUG] [org.gradle.execution.taskgraph.DefaultTaskPlanExecutor] Task worker [Thread[Task worker for ':',5,main]] finished, busy: 0.267 secs, idle: 0.012 secs 17:33:42.837 [DEBUG] [org.gradle.execution.taskgraph.DefaultTaskPlanExecutor] Task worker [Thread[Task worker for ':' Thread 2,5,main]] finished, busy: 0.0 secs, idle: 0.278 secs 17:33:42.836 [DEBUG] [org.gradle.execution.taskgraph.DefaultTaskPlanExecutor] Task worker [Thread[Task worker for ':' Thread 3,5,main]] finished, busy: 0.0 secs, idle: 0.278 secs 17:33:42.836 [DEBUG] [org.gradle.execution.taskgraph.DefaultTaskPlanExecutor] Task worker [Thread[Task worker for ':' Thread 4,5,main]] finished, busy: 0.0 secs, idle: 0.278 secs 17:33:42.839 [DEBUG] [org.gradle.internal.progress.DefaultBuildOperationExecutor] Completing Build operation 'Run tasks' 17:33:42.844 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter] 17:33:42.844 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter] FAILURE: Build failed with an exception. 17:33:42.845 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter] 17:33:42.845 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter] * What went wrong: 17:33:42.845 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter] Execution failed for task ':compileJava'. 17:33:42.845 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter] > Compilation failed; see the compiler error output for details. 17:33:42.845 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter] 17:33:42.845 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter] * Try: 17:33:42.845 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter] Run with --stacktrace option to get the stack trace. Run with --scan to get full insights. 17:33:42.845 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter] 17:33:42.845 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter] * Get more help at https://help.gradle.org 17:33:42.845 [ERROR] [org.gradle.internal.buildevents.BuildResultLogger] 17:33:42.845 [ERROR] [org.gradle.internal.buildevents.BuildResultLogger] BUILD FAILED in 4s

When I commented out the code in my main class the project builds successfully, therefore there isn't an issue with gradle or java setup, I just cant get the gradle jjschema packages/dependencies to resolve/download via graddle in the project?

Thanks

1

1 Answers

0
votes

But you don't import JsonSchemaFactory in your x_mqtt_message. Therefore compiler cannot find those class.