1

I started a simple project using an artefact from confluent. But when I try to compile the project using mvn clean install or mvn clean package I am getting message like

[ERROR] C:\Users\its\git\datakmu\service-stack\stream-data-preprocessor\src\main\java\at\ac\fhsalzburg\datakmu\service\DataPreProcessor.java:[1]
        package at.ac.fhsalzburg.datakmu.service;
        ^
The type java.lang.Object cannot be resolved. It is indirectly referenced from required .class files
[ERROR] C:\Users\its\git\datakmu\service-stack\stream-data-preprocessor\src\main\java\at\ac\fhsalzburg\datakmu\service\DataPreProcessor.java:[3]
        public class DataPreProcessor {
                     ^^^^^^^^^^^^^^^^
Implicit super constructor Object() is undefined for default constructor. Must define an explicit constructor
[ERROR] C:\Users\its\git\datakmu\service-stack\stream-data-preprocessor\src\main\java\at\ac\fhsalzburg\datakmu\service\DataPreProcessor.java:[4]
        public static void main(String[] args) {
                                ^^^^^^
String cannot be resolved to a type

indicating that basic SDK classes are not found like "The type java.lang.Object cannot be resolved". I am working with several other Maven project and they work fine. I do not get it, it must be really some stupid error.

Here you can find the pom.xml file:

<!--
   Licensed to the Apache Software Foundation (ASF) under one or more
   contributor license agreements.  See the NOTICE file distributed with
   this work for additional information regarding copyright ownership.
   The ASF licenses this file to You under the Apache License, Version 2.0
   (the "License"); you may not use this file except in compliance with
   the License.  You may obtain a copy of the License at

       http://www.apache.org/licenses/LICENSE-2.0

   Unless required by applicable law or agreed to in writing, software
   distributed under the License is distributed on an "AS IS" BASIS,
   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   See the License for the specific language governing permissions and
   limitations under the License.
-->

<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>stream-data-preprocessor</groupId>
    <artifactId>stream-data-preprocessor</artifactId>
    <version>0.1</version>
    <packaging>jar</packaging>

    <name>Kafka Streams Quickstart :: Java</name>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <slf4j.version>1.7.7</slf4j.version>
        <log4j.version>1.2.17</log4j.version>
        <java.version>8</java.version>
        <avro.version>1.9.1</avro.version>
        <gson.version>2.2.4</gson.version>
        <kafka.version>2.5.0</kafka.version>
        <confluent.version>5.5.1</confluent.version>
        <maven.compiler.source>1.8</maven.compiler.source>
        <maven.compiler.target>1.8</maven.compiler.target>
    </properties>

    <repositories>
        <repository>
            <id>apache.snapshots</id>
            <name>Apache Development Snapshot Repository</name>
            <url>https://repository.apache.org/content/repositories/snapshots/</url>
            <releases>
                <enabled>false</enabled>
            </releases>
            <snapshots>
                <enabled>true</enabled>
            </snapshots>
        </repository>
        <repository>
            <id>confluent</id>
            <name>Confluent</name>
            <url>https://packages.confluent.io/maven/</url>
        </repository>
    </repositories>

    <!--
        Execute "mvn clean package -Pbuild-jar"
        to build a jar file out of this project!
    -->

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.1</version>
                <configuration>
                    <source>${maven.compiler.source}</source>
                    <target>${maven.compiler.target}</target>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.avro</groupId>
                <artifactId>avro-maven-plugin</artifactId>
                <version>${avro.version}</version>
                <executions>
                    <execution>
                        <phase>generate-sources</phase>
                        <goals>
                            <goal>schema</goal>
                        </goals>
                        <configuration>
                            <sourceDirectory>${project.basedir}/src/main/resources/avro/</sourceDirectory>
                            <includes>
                                <include>SensorValue.avsc</include>
                            </includes>
                            <outputDirectory>${project.build.directory}/generated-sources</outputDirectory>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
            <plugin>
                <groupId>io.confluent</groupId>
                <artifactId>kafka-schema-registry-maven-plugin</artifactId>
                <version>${confluent.version}</version>
                <configuration>
                    <schemaRegistryUrls>
                        <param>http://localhost:28081</param>
                    </schemaRegistryUrls>
                    <subjects>
                        <transactions-value>src/main/resources/avro/Sentence.avsc</transactions-value>
                    </subjects>
                    <outputDirectory/>
                </configuration>
                <goals>
                    <goal>test-compatibility</goal>
                </goals>
            </plugin>
        </plugins>

        <pluginManagement>
            <plugins>
                <plugin>
                    <artifactId>maven-compiler-plugin</artifactId>
                    <configuration>
                        <source>${maven.compiler.source}</source>
                        <target>${maven.compiler.target}</target>
                        <compilerId>jdt</compilerId>
                    </configuration>
                    <dependencies>
                        <dependency>
                            <groupId>org.eclipse.tycho</groupId>
                            <artifactId>tycho-compiler-jdt</artifactId>
                            <version>0.21.0</version>
                        </dependency>
                    </dependencies>
                </plugin>
                <plugin>
                    <groupId>org.eclipse.m2e</groupId>
                    <artifactId>lifecycle-mapping</artifactId>
                    <version>1.0.0</version>
                    <configuration>
                        <lifecycleMappingMetadata>
                            <pluginExecutions>
                                <pluginExecution>
                                    <pluginExecutionFilter>
                                        <groupId>org.apache.maven.plugins</groupId>
                                        <artifactId>maven-assembly-plugin</artifactId>
                                        <versionRange>[2.4,)</versionRange>
                                        <goals>
                                            <goal>single</goal>
                                        </goals>
                                    </pluginExecutionFilter>
                                    <action>
                                        <ignore/>
                                    </action>
                                </pluginExecution>
                                <pluginExecution>
                                    <pluginExecutionFilter>
                                        <groupId>org.apache.maven.plugins</groupId>
                                        <artifactId>maven-compiler-plugin</artifactId>
                                        <versionRange>[3.1,)</versionRange>
                                        <goals>
                                            <goal>testCompile</goal>
                                            <goal>compile</goal>
                                        </goals>
                                    </pluginExecutionFilter>
                                    <action>
                                        <ignore/>
                                    </action>
                                </pluginExecution>
                            </pluginExecutions>
                        </lifecycleMappingMetadata>
                    </configuration>
                </plugin>
            </plugins>
        </pluginManagement>
    </build>

    <dependencies>
        <!-- Apache Kafka dependencies -->
        <dependency>
            <groupId>org.apache.kafka</groupId>
            <artifactId>kafka-streams</artifactId>
            <version>${kafka.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.kafka</groupId>
            <artifactId>kafka-clients</artifactId>
            <version>${kafka.version}</version>
        </dependency>
        <!-- Dependencies below are required/recommended only when using Apache Avro. -->
        <dependency>
            <groupId>io.confluent</groupId>
            <artifactId>kafka-avro-serializer</artifactId>
            <version>${confluent.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.avro</groupId>
            <artifactId>avro</artifactId>
            <version>${avro.version}</version>
        </dependency>
    </dependencies>
</project>

Also maven is configured correctly, as far as I can see:

Maven home: C:\Users\its\scoop\apps\maven\current
Java version: 11.0.2, vendor: Oracle Corporation, runtime: C:\Program Files\Java\jdk-11.0.2
Default locale: de_AT, platform encoding: Cp1252
OS name: "windows 10", version: "10.0", arch: "amd64", family: "windows"

For completeness the main java class. I deleted all other code snippets from the archetype:

package at.ac.fhsalzburg.datakmu.service;

public class DataPreProcessor {
    public static void main(String[] args) {
        //TODO
    }
}

Could someone help? If you need any further input just let me know! Thx

edi
  • 917
  • 7
  • 17

1 Answers1

0

In your pom.xml you have the following snippet. Either create the avro folder in src/main/resources or remove the avro part. Then do a mvn clean verify to make sure your project builds

       <execution>
                    <phase>generate-sources</phase>
                    <goals>
                        <goal>schema</goal>
                    </goals>
                    <configuration>
                        <sourceDirectory>${project.basedir}/src/main/resources/avro/</sourceDirectory>
                        <includes>
                            <include>SensorValue.avsc</include>
                        </includes>
                        <outputDirectory>${project.build.directory}/generated-sources</outputDirectory>
                    </configuration>
                </execution>
Daniel Jacob
  • 1,455
  • 9
  • 17
  • Thanks Jacob, however, the folder is there, cause I need some avro schemata there finally. Nevertheless, I've tried to remove the part but a `mvn package` still gives me the same error. – edi Aug 14 '20 at 18:11
  • I think it has to do with your intellij configuration. Go to project structure->project-> project sdk : make sure this is set to one on a valid path. Same for project structure->sdks-> on the right side there should be sdk home path. Make sure it is set correctly and if that is the case you will see a bunch of library files. of your jdk. – Daniel Jacob Aug 14 '20 at 18:20
  • Thanks, still appreciating your efforts, but I need it to get it compiled with command line tool `mvn` only. So I need to get the pom.xml right. – edi Aug 14 '20 at 18:30
  • Nothing wrong with the pom.xml i have built it succesfully. – Daniel Jacob Aug 14 '20 at 18:31
  • Perhaps you need to set some environment variables like JAVA_HOME? https://javatutorial.net/set-java-home-windows-10 – Daniel Jacob Aug 14 '20 at 18:32
  • $ echo $JAVA_HOME results in "C:\Program Files\Java\jdk-11.0.2", as I said maven works fine for me on many other projects – edi Aug 14 '20 at 18:35
  • But ... I am going to try a different JDK – edi Aug 14 '20 at 18:39
  • 1
    check out these properties in the pom.xml 8 1.8 1.8 – Daniel Jacob Aug 14 '20 at 19:49
  • Just to summarise: Maven configuration requires Java 8 but current Java version is 11. Configuration properties explained: https://stackoverflow.com/questions/38882080/specifying-java-version-in-maven-differences-between-properties-and-compiler-p – h-kippo Aug 14 '23 at 11:45