user10644909
user10644909

Reputation:

Why do I get a module missing error for a dependency that I added in maven , and i need to resolve it?

Error:(10, 18) java: package com.google.gson is not visible (package com.google.gson is declared in module gson, but module AnimalShelter fails to read it)

I'm getting this error after adding the gson dependency to my maven, I'm completely lost as to how to fix it, I've googled around and it was suggested I put a required in my module-info.java. Did that, it fixes the IDE error but then when I try to run

java.lang.module.FindException: Module gson not found, required by AnimalShelter

I'm honestly not up to speed with how modules work at all so I might be overlooking somthing easy, but isn't it supposed to work after adding the dependency in my maven pom.xml? The pom.xml snippet is shown below

pom.xml: (imported)

<?xml version="1.0" encoding="UTF-8"?>
<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/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>groupId</groupId>
    <artifactId>AnimalShelterYori</artifactId>
    <version>1.0-SNAPSHOT</version>

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-dependency-plugin</artifactId>
                <version>3.1.1</version>
                <executions>
                    <execution>
                        <id>copy-dependencies</id>
                        <phase>package</phase>
                        <goals>
                            <goal>copy-dependencies</goal>
                        </goals>
                        <configuration>
                            <outputDirectory>${project.build.directory}/../mods</outputDirectory>
                            <overWriteReleases>false</overWriteReleases>
                            <overWriteSnapshots>false</overWriteSnapshots>
                            <overWriteIfNewer>true</overWriteIfNewer>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.8.0</version>
                <configuration>
                    <source>11</source>
                    <target>11</target>
                </configuration>
            </plugin>
            <plugin>
                <artifactId>maven-surefire-plugin</artifactId>
                <version>2.22.0</version>
            </plugin>
            <plugin>
                <artifactId>maven-failsafe-plugin</artifactId>
                <version>2.22.0</version>
            </plugin>
        </plugins>
    </build>
<dependencies>



        <!-- https://mvnrepository.com/artifact/org.openjfx/javafx-controls -->
        <dependency>
            <groupId>org.openjfx</groupId>
            <artifactId>javafx-controls</artifactId>
            <version>11.0.2</version>
        </dependency>


    <dependency>
        <groupId>com.google.code.gson</groupId>
        <artifactId>gson</artifactId>
        <version>2.1</version>
        <scope>provided</scope>
    </dependency>

    <!-- https://mvnrepository.com/artifact/org.openjfx/javafx-fxml -->
        <dependency>
            <groupId>org.openjfx</groupId>
            <artifactId>javafx-fxml</artifactId>
            <version>11.0.2</version>
        </dependency>


        <!-- ... -->
        <dependency>
            <groupId>org.junit.jupiter</groupId>
            <artifactId>junit-jupiter-api</artifactId>
            <version>5.4.0</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.junit.jupiter</groupId>
            <artifactId>junit-jupiter-engine</artifactId>
            <version>5.4.0</version>
            <scope>test</scope>
        </dependency>
        <!-- ... -->
    </dependencies>
</project>

Upvotes: 2

Views: 2557

Answers (2)

Mike
Mike

Reputation: 5152

Using Maven's provided scope implies the dependency does not need to be packaged with your application (i.e. you're deploying to an app server like Tomcat that will provide the dependency). Try removing the scope all together or change to the default of compile.

Upvotes: 0

Atul Dwivedi
Atul Dwivedi

Reputation: 1462

You could try below options:

  1. The scope of Gson dependency is provided so make sure at runtime this will be provided by any container
  2. Update the maven project and do clean install
  3. Try using latest version of Gson

    <dependency> <groupId>com.google.code.gson</groupId> <artifactId>gson</artifactId> <version>2.8.5</version> <scope>provided</scope> </dependency>

Upvotes: 2

Related Questions