Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Cannot access class com.sun.org.apache.xerces.internal.jaxp.datatype.XMLGregorianCalendarImpl

My program needs to convert an xml file to another xml file compatible with sending invoices through our company program.

The compilation of the code happens without problems, while when I start the .bat file I get this error:

Exception in thread "main" java.lang.IllegalAccessError: 
class controller.ConversionWorker (in unnamed module @0x71c8becc) 
cannot access class com.sun.org.apache.xerces.internal.jaxp.datatype.XMLGregorianCalendarImpl (in module java.xml) 
because module java.xml does not export com.sun.org.apache.xerces.internal.jaxp.datatype to unnamed module @0x71c8becc

This is the code where the exception is generated:

 private XMLGregorianCalendar stringToXMLGregorian(String data, String pattern) {
    Calendar date = Calendar.getInstance();
    SimpleDateFormat format = new SimpleDateFormat(pattern);
    try {
        date.setTime(format.parse(data));
    } catch (ParseException e) {
        e.printStackTrace();
        Log.debug("ERRORE DI CONVERSIONE DATA: " + data);
    }

    XMLGregorianCalendar result = new XMLGregorianCalendarImpl();
    result.setYear(date.get(Calendar.YEAR));
    result.setMonth(date.get(Calendar.MONTH) + 1);
    result.setDay(date.get(Calendar.DAY_OF_MONTH));

    if (!pattern.equals(DATE_PATTERN)) {
        result.setHour(date.get(Calendar.HOUR_OF_DAY));
        result.setMinute(date.get(Calendar.MINUTE));
    }

    return result;

}

This code was written by a former colleague of mine and only he worked on it. Honestly I am not so much informed in java and how it is connected to gradle but unfortunately this code needs to be revised due to an error that occurs

In gradle-wrapper.properties i've add the:

distributionUrl=https\://services.gradle.org/distributions/gradle-6.3-bin.zip

I have installed the latest version of Java, Gradle and i build the code in Intellij

How can i solve this?

like image 789
Lucia Foschini Avatar asked Aug 07 '26 06:08

Lucia Foschini


1 Answers

You are not supposed to use class XMLGregorianCalendarImpl in your own code, it's an internal class in the JDK and therefore it cannot be used directly.

Create an instance of XMLGregorianCalendar using DatatypeFactory instead:

import javax.xml.datatype.DatatypeFactory;

// ...

XMLGregorianCalendar result = DatatypeFactory.newInstance().newXMLGregorianCalendar();

See java.xml.datatype.DatatypeFactory

like image 189
Jesper Avatar answered Aug 09 '26 01:08

Jesper



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!