Şu anda bir Google Play 2.1 projesi üzerinde çalışıyorum; buradaki web hizmeti istekleri, kullanıcı tarafından sağlanan görüntüleri indirmeyi, yeniden boyutlandırmayı ve bunları yeniden kırpmak ve bilinen kötü fotoğrafları filtrelemek (örneğin, kullanıcıların şirket logolarını yüklemesini istemiyoruz). OpenCV'yi back-end çalışmayı yürütmek için kullanmaya çalışıyoruz, fakat ben IntelliJ'i, java projesiyle çalışan bir şekilde OpenCV jar'unu ekleyemiyorum.IntelliJ, Play projesinin bağımlılığı olarak jar eklerken OpenCV için yerel kitaplıklar bulamıyor
Herhangi bir sorun olmadan OpenCV kaynağından yapıyorum. charles/opencv/I ilgi üç dosya var, bu klasörün içinde
serbest /home /: Bu, aşağıdaki klasörde bıraktı
- bin/opencv-246.jar
- lib/ cv2.so
- lib/
Ben yeni bir Java kütüphanesi olarak intellij için kavanoz dosyası eklemek çalışırsanız libopencv_java246.so, bu görünüşte bütün sınıflar/yöntemlerini bulur ve ben aut kullanarak kodu yazabilirsiniz O-tamamlandı. Ayrıca ilgili sınıfları veya yöntemleri tıklayabilirim ve beni doğru dosyalara getiriyor. Ben Çal projeyi çalıştırmayı denediğinizde
Ancak, bu hatayı alıyorum:
[info] Loading project definition from /home/charles/Github/ImageProject
[info] Set current project to ImageProject (in build file:/home/charles/Github/ImageProject/)
--- (Running the application from SBT, auto-reloading is enabled) ---
[info] play - Listening for HTTP on /0:0:0:0:0:0:0:0:9000
Server started, use Alt+D to stop
[info] Compiling 1 Java source to /home/charles/Github/ImageProject/target/scala-2.10/classes...
[error] /home/charles/Github/ImageProject/app/controllers/Application.java:7: error: package org.opencv.core does not exist
[error] import org.opencv.core.Core;
[error] ^
Ben de direkt olarak projeye kavanoz dosyasının bir kopyasını ekleyerek denedim (böylece opencv-246 koyarak. ImageProject/lib içine jar) ve daha sonra java kütüphanesini bu konumdan ekleyin. Ama bu sadece farklı hata ile beni bırakır:
java.lang.UnsatisfiedLinkError: no opencv_java246 in java.library.path
Sorunun bir parçası yerli kütüphaneleri ile ilişkili olabileceğini itiraf etti Java OpenCV sarıcı kullanımları (yukarıdaki dosya 2 veya 3). Eclipse'de, bir jar dosyası eklediğinizde, OpenCV'nin iyi çalışmasını sağlayan yerel kitaplık konumunu açıkça ayarlayabilirsiniz. ? Belki yanlış yerde ayarlıyorum gerçi bir JVM olarak ayarlama denedim (
-Djava.library.path=/home/charles/opencv/release/lib
Ama bu işe görünmüyor: Ben sorunu çözmek için bu kullanmanın önerilerini okudum proje için çalıştırma yapılandırmasında ve IDE ayarlarında parametre belirtilmez, ancak ikisi de kullanılmaz veya saygı görmez).
Not: Sadece bir kez daha netleştirmek için, bu bir Android projesi değil, bir Play2 projesidir. Orada Android'e özgü bazı yardımlar var, bu konuyla alakalı değil.
Bu oldukça yalın bir şey olmalıydı, ama bu noktada bir cevap bulmaya çalışırken birkaç gün harcadım ve hala hiçbir şeyim yok. Herhangi bir fikir?
Ek ayrıntılar: Ben de burada OpenCV dokümanlarının "Running SBT örnekleri", aşağıdaki çalıştı: http://docs.opencv.org/doc/tutorials/introduction/desktop_java/java_dev_intro.html
Ve ayrıca benzer bir hata alıyorum: İstediğiniz
[email protected]:~/JavaSample$ sbt run
[info] Loading project definition from /home/charles/JavaSample/project
[info] Set current project to JavaSample (in build file:/home/charles/JavaSample/)
[info] Compiling 1 Java source to /home/charles/JavaSample/target/scala-2.10/classes...
[info] Running HelloOpenCV
Hello, OpenCV
[error] (run-main) java.lang.UnsatisfiedLinkError: no opencv_java246 in java.library.path
java.lang.UnsatisfiedLinkError: no opencv_java246 in java.library.path
at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1856)
at java.lang.Runtime.loadLibrary0(Runtime.java:845)
at java.lang.System.loadLibrary(System.java:1084)
at HelloOpenCV.main(HelloOpenCV.java:47)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:601)
[trace] Stack trace suppressed: run last compile:run for the full output.
java.lang.RuntimeException: Nonzero exit code: 1
at scala.sys.package$.error(package.scala:27)
[trace] Stack trace suppressed: run last compile:run for the full output.
[error] (compile:run) Nonzero exit code: 1
[error] Total time: 2 s, completed Jul 17, 2013 5:11:39 PM
kutusundan çıkmak için varsayalım Bu [hata] /home/charles/Github/ImageProject/app/controllers/Application.java:7: hata: paket org.opencv.core yok bir java olarak beni vurur cp sorunu, daha sonra bir ana lib sorunu. SBT'nizin doğru şekilde yapılandırılmamış olduğunu düşünüyorum. – morpheus05
Bu durumda SBT'nin nasıl yapılandırılması gerektiğine dair bir örnek var mı? –
http://stackoverflow.com/questions/24856501/how-do-you-link-a-native-library-to-a-jar-in-intellij/37038583#37038583 adresindeki yanıtıma bakın, genellikle yerel kütüphane Çalışma zamanı bağımlılığı ve böylece VM'nin derleme zamanında IntelliJ değil, çalışma zamanında nasıl belirlediğini belirtmelisiniz. –