0

I am getting maven compile error package COM.ibm.db2.jdbc.app does not exist when I am trying to build my maven project with db2 jars and zips.

The code compiles for db2 jars/zip in RAD.

My nexus reposistory has the following files and dependencies defined and I am able to use them in my pom as well.

<dependency>
  <groupId>com.ibm.db2</groupId>
  <artifactId>db2jcc4</artifactId>
  <version>9.5.7</version>
</dependency> 
<dependency>
 <groupId>com.ibm.db2</groupId>
 <artifactId>db2jcc_license_cu</artifactId>
 <version>9.5.7</version>
</dependency>
<dependency>
 <groupId>com.ibm.db2</groupId>
 <artifactId>db2java</artifactId>
 <version>9.5.7</version>
 <type>zip</type>
<scope>compile</scope>
</dependency>

This is the source code which uses this ..

private boolean executeConnectionPackage(Connection spConnection, String csSpDbPackage)
{
    try
    {
        COM.ibm.db2.jdbc.app.DB2Connection Db2connection = null;// (COM.ibm.db2.jdbc.app.DB2Connection)spConnection;
        Db2connection.setConnectOption(1276, csSpDbPackage); // SQL_ATTR_CURRENT_PACKAGE_SET
        Log.logNormal("Change Package:" + csSpDbPackage);
    }
    catch (Exception ex)
    {
        Log.logNormal("Problem with change Package:" + csSpDbPackage + " ex:" + ex.getMessage());
        return false;
    }
    return true;
}

UPDATE for MAVEN EXCEPTION

    [INFO] -------------------------------------------------------------
    [ERROR] COMPILATION ERROR : 
    [INFO] -------------------------------------------------------------
    [ERROR] /C:/Development/eclipse//workspace/ExecuteCRuntime/src/spServer/StoredProcedure.java:[31,1] package COM.ibm.db2.jdbc.app does not exist
    [ERROR] /C:/Development/eclipse//workspace/ExecuteCRuntime/src/spServer/StoredProcedure.java:[181,45] package COM.ibm.db2.jdbc.app does not exist
    [INFO] 2 errors 
    [INFO] -------------------------------------------------------------
    [INFO] ------------------------------------------------------------------------
    [INFO] BUILD FAILURE
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.3:compile (default-compile) on project ExecuteCRuntime: Compilation failure: Compilation failure:

UPDATE running maven with -e

[ERROR] -> [Help 1]
org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.3:compile (default-compile) on project ExecuteCRuntime: Compilation failure
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:212)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:116)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:80)
    at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build(SingleThreadedBuilder.java:51)
    at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:128)
    at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:307)
    at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:193)
    at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:106)
    at org.apache.maven.cli.MavenCli.execute(MavenCli.java:863)
    at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:288)
    at org.apache.maven.cli.MavenCli.main(MavenCli.java:199)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:289)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:229)
    at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:415)
    at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:356)
Caused by: org.apache.maven.plugin.compiler.CompilationFailureException: Compilation failure
    at org.apache.maven.plugin.compiler.AbstractCompilerMojo.execute(AbstractCompilerMojo.java:911)
    at org.apache.maven.plugin.compiler.CompilerMojo.execute(CompilerMojo.java:129)
    at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:134)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:207)
    ... 20 more

My pom Dependency for DB2 Jars/zip file . This is defined in globally accesible company wide nexus repo

    <dependency>
  <groupId>com.ibm.db2</groupId>
  <artifactId>db2jcc4</artifactId>
  <version>9.5.7</version>
</dependency> 
<dependency>
 <groupId>com.ibm.db2</groupId>
 <artifactId>db2jcc_license_cu</artifactId>
 <version>9.5.7</version>
</dependency>
<dependency>
 <groupId>com.ibm.db2</groupId>
 <artifactId>db2java</artifactId>
 <version>9.5.7</version>
 <type>zip</type>
<scope>compile</scope>
</dependency>

Here is the FULL Pom

<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>ExecuteCRuntime</groupId>
  <artifactId>ExecuteCRuntime</artifactId>
  <version>0.0.1-SNAPSHOT</version>

  <dependencies>

  <!-- https://mvnrepository.com/artifact/log4j/log4j -->
<dependency>
    <groupId>log4j</groupId>
    <artifactId>log4j</artifactId>
    <version>1.2.17</version>
</dependency>
  <!-- https://mvnrepository.com/artifact/ant/ant -->
  <!-- 
<dependency>
    <groupId>ant</groupId>
    <artifactId>ant</artifactId>
    <version>1.7.0</version>
</dependency>
 -->
   <!-- https://mvnrepository.com/artifact/commons-codec/commons-codec -->
<dependency>
    <groupId>commons-codec</groupId>
    <artifactId>commons-codec</artifactId>
    <version>1.10</version>
</dependency>
  <!-- https://mvnrepository.com/artifact/org.apache.commons/commons-io -->
<dependency>
    <groupId>org.apache.commons</groupId>
    <artifactId>commons-io</artifactId>
    <version>1.3.2</version>
</dependency>
<!-- https://mvnrepository.com/artifact/commons-logging/commons-logging -->
<dependency>
    <groupId>commons-logging</groupId>
    <artifactId>commons-logging</artifactId>
    <version>1.2</version>
</dependency>
<!-- https://mvnrepository.com/artifact/commons-net/commons-net -->
<dependency>
    <groupId>commons-net</groupId>
    <artifactId>commons-net</artifactId>
    <version>1.4.1</version>
</dependency>
<!-- https://mvnrepository.com/artifact/com.sleepycat/je -->
<!-- https://mvnrepository.com/artifact/com.sleepycat/je -->
<dependency>
  <groupId>com.projectdarkstar.ext.berkeleydb</groupId>
  <artifactId>je</artifactId>
  <version>3.2.23</version>
</dependency>

<!-- https://mvnrepository.com/artifact/com.sun.media/jai_codec -->


<dependency>
  <groupId>com.ibm.db2</groupId>
  <artifactId>db2jcc4</artifactId>
  <version>9.5.7</version>
</dependency> 
        <dependency>
            <groupId>com.ibm.db2</groupId>
            <artifactId>db2jcc_license_cu</artifactId>
            <version>9.5.7</version>
        </dependency>
        <dependency>
            <groupId>com.ibm.db2</groupId>
            <artifactId>db2java</artifactId>
            <version>9.5.7</version>
            <type>zip</type>
            <scope>compile</scope>
        </dependency>
        <dependency>
            <groupId>javax.activation</groupId>
            <artifactId>activation</artifactId>
            <version>1.1.1</version>
        </dependency>
  <!-- https://mvnrepository.com/artifact/junit/junit -->
<dependency>
    <groupId>junit</groupId>
    <artifactId>junit</artifactId>
    <version>4.12</version>
</dependency>
  <!-- https://mvnrepository.com/artifact/xml-apis/xml-apis -->
<dependency>
    <groupId>xml-apis</groupId>
    <artifactId>xml-apis</artifactId>
    <version>2.0.2</version>
</dependency>
 <!-- https://mvnrepository.com/artifact/xalan/serializer -->
<dependency>
    <groupId>xalan</groupId>
    <artifactId>serializer</artifactId>
    <version>2.7.2</version>
</dependency>
<!-- https://mvnrepository.com/artifact/javax.servlet/javax.servlet-api -->
<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>javax.servlet-api</artifactId>
    <version>3.1.0</version>
</dependency>
<!-- https://mvnrepository.com/artifact/javax.mail/javax.mail-api -->
<dependency>
    <groupId>javax.mail</groupId>
    <artifactId>javax.mail-api</artifactId>
    <version>1.5.5</version>
</dependency>
<!-- https://mvnrepository.com/artifact/xerces/xercesImpl -->
<dependency>
    <groupId>xerces</groupId>
    <artifactId>xercesImpl</artifactId>
    <version>2.8.0</version>
</dependency>
<!-- https://mvnrepository.com/artifact/com.oracle/ojdbc14 -->
<dependency>
  <groupId>com.oracle</groupId>
  <artifactId>ojdbc</artifactId>
  <version>1.4</version>
</dependency>

  </dependencies>
  <build>
    <sourceDirectory>src</sourceDirectory>
    <resources>
      <resource>
        <directory>src</directory>
        <excludes>
          <exclude>**/*.java</exclude>
        </excludes>
      </resource>
    </resources>
    <plugins>
      <plugin>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>3.3</version>

        <configuration>
        <!-- <compilerArgument>-XDignore.symbol.file</compilerArgument> -->
          <source>1.8</source>
          <target>1.8</target>
        </configuration>
      </plugin>
    </plugins>

  </build>
</project>

Can anyone please help me and let me know what I am missing here.

Thanks Dhiren

user2358826
  • 221
  • 1
  • 5
  • 17
  • Please post the exception stacktrace. – 11thdimension Aug 15 '16 at 19:01
  • There is no exception stack trace this is a compile error from maven. – user2358826 Aug 15 '16 at 19:25
  • @user2358826 run maven with `-e` key – vsminkov Aug 15 '16 at 19:30
  • DB2 pacakge is not available in the maven central repository, that means it's included as non maven dependency JAR in your project. Check this post to include an external dependency http://stackoverflow.com/questions/15382561/adding-db2-jars-to-java-webapp-using-maven – 11thdimension Aug 15 '16 at 19:34
  • If it builds in RAD but not in maven then most probably it's a dependency problem. Any other messages from maven besides compile error - was it able to download the dependencies? Check your .m2 maven repository. Also, check Java Build Path of your project properties and compare with maven dependencies. If you can't spot the problem this way, then post your entire pom.xml and build output, you might have an error in your pom.xml. – Yuri Steinschreiber Aug 15 '16 at 19:35
  • I already have maven db2 jar upload to local nexus respository to be accessible globally within the company,. Thos pom dependency I showed are what they are defined as. Is the db2java.zip not getting picked up ?since COm.ibm package is in db2java.zip..m2/repo has all the dependent jars files downloaded. I will highlight my pom settings for db2 – user2358826 Aug 15 '16 at 19:37

2 Answers2

2

The app driver (COM.ibm.db2.jdbc.app) has long been deprecated; it requires the native DB2 CLI driver to be installed. You should be using the JCC driver (com.ibm.db2.jcc). More info in the manual.

Glorfindel
  • 21,988
  • 13
  • 81
  • 109
mustaccio
  • 18,234
  • 16
  • 48
  • 57
  • Does this mean that I should change code where it is using COM.ibm.db2.jdbc.app. This worked with RAD but does not compile with maven builds ? Why does it not even find db2java.zip. It should be pulled in by maven during the build – user2358826 Aug 15 '16 at 19:49
0

I changed code to handle app Driver. Class dbs = Class.forName("COM.ibm.db2.jdbc.app.DB2Connection"); Method m = dbs.getDeclaredMethod("setConnectOption", Integer.TYPE, String.class);

user2358826
  • 221
  • 1
  • 5
  • 17