Search code examples
javagoogle-cloud-dataflowapache-beam

Apache beam v2.50.0 NoClassDefFound - /MemoryMonitorOptions


While updating the Apache Beam version from 2.46.0 to 2.50.0 for Java based Dataflow, the mvn package command runs successfully. However while executing the mvn compile:exec script - we are getting an error "java.lang.NoClassDefFoundError: org/apache/beam/sdk/options/MemoryMonitorOptions"

No updates in pom file except for the update in Apache beam version - [WARNING] 2023-10-12T10:39:17.9662373Z java.lang.NoClassDefFoundError: org/apache/beam/sdk/options/MemoryMonitorOptions 2023-10-12T10:39:17.9665631Z at java.lang.ClassLoader.defineClass1 (Native Method) 2023-10-12T10:39:17.9668538Z at java.lang.ClassLoader.defineClass (ClassLoader.java:1022) 2023-10-12T10:39:17.9670605Z at java.security.SecureClassLoader.defineClass (SecureClassLoader.java:174) 2023-10-12T10:39:17.9672586Z at java.net.URLClassLoader.defineClass (URLClassLoader.java:555) 2023-10-12T10:39:17.9674516Z at java.net.URLClassLoader$1.run (URLClassLoader.java:458) 2023-10-12T10:39:17.9676939Z at java.net.URLClassLoader$1.run (URLClassLoader.java:452) 2023-10-12T10:39:17.9678816Z at java.security.AccessController.doPrivileged (Native Method) 2023-10-12T10:39:17.9690248Z at java.net.URLClassLoader.findClass (URLClassLoader.java:451) 2023-10-12T10:39:17.9692252Z at java.lang.ClassLoader.loadClass (ClassLoader.java:594) 2023-10-12T10:39:17.9694175Z at java.lang.ClassLoader.loadClass (ClassLoader.java:527) 2023-10-12T10:39:17.9696026Z at java.lang.ClassLoader.defineClass1 (Native Method) 2023-10-12T10:39:17.9699991Z at java.lang.ClassLoader.defineClass (ClassLoader.java:1022) 2023-10-12T10:39:17.9704965Z at java.security.SecureClassLoader.defineClass (SecureClassLoader.java:174) 2023-10-12T10:39:17.9706908Z at java.net.URLClassLoader.defineClass (URLClassLoader.java:555) 2023-10-12T10:39:17.9708814Z at java.net.URLClassLoader$1.run (URLClassLoader.java:458) 2023-10-12T10:39:17.9710696Z at java.net.URLClassLoader$1.run (URLClassLoader.java:452) 2023-10-12T10:39:17.9712552Z at java.security.AccessController.doPrivileged (Native Method) 2023-10-12T10:39:17.9714469Z at java.net.URLClassLoader.findClass (URLClassLoader.java:451) 2023-10-12T10:39:17.9716698Z at java.lang.ClassLoader.loadClass (ClassLoader.java:594) 2023-10-12T10:39:17.9718622Z at java.lang.ClassLoader.loadClass (ClassLoader.java:527) 2023-10-12T10:39:17.9720635Z at org.apache.beam.runners.dataflow.DataflowPipelineRegistrar$Options.getPipelineOptions (DataflowPipelineRegistrar.java:40) 2023-10-12T10:39:17.9722611Z at org.apache.beam.sdk.options.PipelineOptionsFactory$Cache.initializeRegistry (PipelineOptionsFactory.java:2090) 2023-10-12T10:39:17.9724487Z at org.apache.beam.sdk.options.PipelineOptionsFactory$Cache. (PipelineOptionsFactory.java:2083) 2023-10-12T10:39:17.9726421Z at org.apache.beam.sdk.options.PipelineOptionsFactory$Cache. (PipelineOptionsFactory.java:2047) 2023-10-12T10:39:17.9728327Z at org.apache.beam.sdk.options.PipelineOptionsFactory.resetCache (PipelineOptionsFactory.java:581) 2023-10-12T10:39:17.9730230Z at org.apache.beam.sdk.options.PipelineOptionsFactory. (PipelineOptionsFactory.java:547) 2023-10-12T10:39:17.9732113Z at cio.mmt.PubSubTopicsToBigQuery.main (PubSubTopicsToBigQuery.java:55) 2023-10-12T10:39:17.9734009Z at org.codehaus.mojo.exec.ExecJavaMojo$1.run (ExecJavaMojo.java:254) 2023-10-12T10:39:17.9743608Z at java.lang.Thread.run (Thread.java:829) 2023-10-12T10:39:17.9745720Z Caused by: java.lang.ClassNotFoundException: org.apache.beam.sdk.options.MemoryMonitorOptions 2023-10-12T10:39:17.9748376Z at java.net.URLClassLoader.findClass (URLClassLoader.java:476) 2023-10-12T10:39:17.9750298Z at java.lang.ClassLoader.loadClass (ClassLoader.java:594) 2023-10-12T10:39:17.9752205Z at java.lang.ClassLoader.loadClass (ClassLoader.java:527) 2023-10-12T10:39:17.9754041Z at java.lang.ClassLoader.defineClass1 (Native Method) 2023-10-12T10:39:17.9756293Z at java.lang.ClassLoader.defineClass (ClassLoader.java:1022) 2023-10-12T10:39:17.9758225Z at java.security.SecureClassLoader.defineClass (SecureClassLoader.java:174) 2023-10-12T10:39:17.9760115Z at java.net.URLClassLoader.defineClass (URLClassLoader.java:555) 2023-10-12T10:39:17.9761982Z at java.net.URLClassLoader$1.run (URLClassLoader.java:458) 2023-10-12T10:39:17.9763915Z at java.net.URLClassLoader$1.run (URLClassLoader.java:452) 2023-10-12T10:39:17.9765721Z at java.security.AccessController.doPrivileged (Native Method) 2023-10-12T10:39:17.9767732Z at java.net.URLClassLoader.findClass (URLClassLoader.java:451) 2023-10-12T10:39:17.9769643Z at java.lang.ClassLoader.loadClass (ClassLoader.java:594) 2023-10-12T10:39:17.9771552Z at java.lang.ClassLoader.loadClass (ClassLoader.java:527) 2023-10-12T10:39:17.9821607Z at java.lang.ClassLoader.defineClass1 (Native Method) 2023-10-12T10:39:17.9824027Z at java.lang.ClassLoader.defineClass (ClassLoader.java:1022) 2023-10-12T10:39:17.9825945Z at java.security.SecureClassLoader.defineClass (SecureClassLoader.java:174) 2023-10-12T10:39:17.9827873Z at java.net.URLClassLoader.defineClass (URLClassLoader.java:555) 2023-10-12T10:39:17.9829648Z at java.net.URLClassLoader$1.run (URLClassLoader.java:458) 2023-10-12T10:39:17.9831550Z at java.net.URLClassLoader$1.run (URLClassLoader.java:452) 2023-10-12T10:39:17.9833326Z at java.security.AccessController.doPrivileged (Native Method) 2023-10-12T10:39:17.9835504Z at java.net.URLClassLoader.findClass (URLClassLoader.java:451) 2023-10-12T10:39:17.9837376Z at java.lang.ClassLoader.loadClass (ClassLoader.java:594) 2023-10-12T10:39:17.9839129Z at java.lang.ClassLoader.loadClass (ClassLoader.java:527) 2023-10-12T10:39:17.9840848Z at org.apache.beam.runners.dataflow.DataflowPipelineRegistrar$Options.getPipelineOptions (DataflowPipelineRegistrar.java:40) 2023-10-12T10:39:17.9846061Z at org.apache.beam.sdk.options.PipelineOptionsFactory$Cache.initializeRegistry (PipelineOptionsFactory.java:2090) 2023-10-12T10:39:17.9847894Z at org.apache.beam.sdk.options.PipelineOptionsFactory$Cache. (PipelineOptionsFactory.java:2083) 2023-10-12T10:39:17.9849601Z at org.apache.beam.sdk.options.PipelineOptionsFactory$Cache. (PipelineOptionsFactory.java:2047) 2023-10-12T10:39:17.9851239Z at org.apache.beam.sdk.options.PipelineOptionsFactory.resetCache (PipelineOptionsFactory.java:581) 2023-10-12T10:39:17.9852896Z at org.apache.beam.sdk.options.PipelineOptionsFactory. (PipelineOptionsFactory.java:547) 2023-10-12T10:39:17.9854577Z at cio.mmt.PubSubTopicsToBigQuery.main (PubSubTopicsToBigQuery.java:55) 2023-10-12T10:39:17.9856188Z at org.codehaus.mojo.exec.ExecJavaMojo$1.run (ExecJavaMojo.java:254) 2023-10-12T10:39:17.9857817Z at java.lang.Thread.run (Thread.java:829) 2023-10-12T10:39:17.9885576Z [INFO] ------------------------------------------------------------------------ 2023-10-12T10:39:17.9885795Z [INFO] BUILD FAILURE 2023-10-12T10:39:17.9886047Z [INFO] ------------------------------------------------------------------------ 2023-10-12T10:39:17.9886514Z [INFO] Total time: 8.555 s 2023-10-12T10:39:17.9886767Z [INFO] Finished at: 2023-10-12T10:39:17Z 2023-10-12T10:39:17.9887048Z [INFO] ------------------------------------------------------------------------ 2023-10-12T10:39:17.9934156Z [ERROR] Failed to execute goal org.codehaus.mojo:exec-maven-plugin:3.0.0:java (default-cli) on project bigquery: An exception occured while executing the Java class. org/apache/beam/sdk/options/MemoryMonitorOptions: org.apache.beam.sdk.options.MemoryMonitorOptions -> [Help 1]

Updated the pom.xml file by removing - plugins. Also update the Java class file to import only specific required class files.

mvn compile exec should have completed successfully and staging location/template location should have the new class files compiled and generated.


Solution

  • It appears that the class MemoryMonitorOptions has been deprecated in version 2.50.0 hence the NoClassDefFound error. You will need to revisit your codes and update all lines referenced to the MemoryMonitorOptions class.

    Adding this SDK version support status document to keep you posted on other version deprecation schedules.