Skip to content

Missing log4j dependency for SURF with scala/sbt #29

@samos123

Description

@samos123

I'm trying to extract Surf features without success. It seems it's missing a log4j dependency.

The code that I'm using:

import de.lmu.ifi.dbs.jfeaturelib.features.SURF
import ij.process.ColorProcessor;
import java.io.File;
import java.io.IOException;
import java.net.URISyntaxException;
import java.util.List;
import javax.imageio.ImageIO;


/**
 * Example of extracting SURF features from section "Detecting the scale-invariant SURF features" in chapter 8.
 */
object Surf extends App {

  // Read input image
  val f = new File("test.jpg");
  val image = new ColorProcessor(ImageIO.read(f));
  val descriptor = new SURF();
  descriptor.run(image);

  val features = descriptor.getFeatures();
  println(features);

}

build.sbt

name := "opencv2-scala-test"
organization := "samos"

exportJars := true

// Some dependencies like `javacpp` are packaged with maven-plugin packaging
classpathTypes += "maven-plugin"


libraryDependencies ++= Seq(
//  "de.lmu.ifi.dbs.jfeaturelib" % "JFeatureLib" % "1.6.3",
  "gov.nih.imagej" % "imagej" % "1.47"
)

libraryDependencies += "org.apache.logging.log4j" % "log4j-core" % "2.5"
libraryDependencies += "org.apache.logging.log4j" % "log4j-api" % "2.5"
libraryDependencies += "org.slf4j" % "slf4j-api" % "1.7.13"

Error that's seen:
java -jar opencv2-scala-test-assembly-0.1-SNAPSHOT.jar
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/log4j/Logger
at de.lmu.ifi.dbs.jfeaturelib.features.surf.IJFacade.(IJFacade.java:41)
at de.lmu.ifi.dbs.jfeaturelib.features.SURF.run(SURF.java:97)
at Surf$delayedInit$body.apply(Surf.scala:20)
at scala.Function0$class.apply$mcV$sp(Function0.scala:40)
at scala.runtime.AbstractFunction0.apply$mcV$sp(AbstractFunction0.scala:12)
at scala.App$$anonfun$main$1.apply(App.scala:71)
at scala.App$$anonfun$main$1.apply(App.scala:71)
at scala.collection.immutable.List.foreach(List.scala:318)
at scala.collection.generic.TraversableForwarder$class.foreach(TraversableForwarder.scala:32)
at scala.App$class.main(App.scala:71)
at Surf$.main(Surf.scala:14)
at Surf.main(Surf.scala)
Caused by: java.lang.ClassNotFoundException: org.apache.log4j.Logger
at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
... 12 more

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions