I'm guessing you didn't install the dll with the packaging type "dll" (use
-Dpackaging=dll, the default is jar -
http://maven.apache.org/plugins/maven-deploy-plugin/usage.html). Check your
local repository and the pom for the dll. Regarding your earlier question,
you sure can package it into a jar and JNA's supposed to extract it out
from the jar automatically if not found on library path but that was exactly
your original problem: either it wasn't working or java.library.path wasn't
set properly. Even with JNA, it's recommended practice to have the library
in an accessible location on the system (
https://jna.dev.java.net/javadoc/com/sun/jna/Native.html#loadLibrary(java.lang.String,%20java.lang.Class))

Kalle


On Tue, Jun 17, 2008 at 10:23 AM, Mikel Cármenes Cavia <[EMAIL PROTECTED]>
wrote:

> I have followed the steps, and I am now getting the following error message
> when I try to package my project:
>
> [INFO]
> ------------------------------------------------------------------------
> [ERROR] BUILD ERROR
> [INFO]
> ------------------------------------------------------------------------
> [INFO] Failed to create assembly: Error adding file-set for
> 'org.git.systems:Cur
> vi:dll:1.0.0' to archive: Error adding archived file-set.
> PlexusIoResourceCollec
> tion not found for: C:\Documents and
> Settings\Mikel\.m2\repository\org\git\syste
> ms\Curvi\1.0.0\Curvi-1.0.0.dll
>
> No such archiver: 'dll'.
> [INFO]
> ------------------------------------------------------------------------
> [INFO] For more information, run Maven with the -e switch
> [INFO]
> ------------------------------------------------------------------------
> [INFO] Total time: 6 seconds
> [INFO] Finished at: Tue Jun 17 14:18:20 ADT 2008
> [INFO] Final Memory: 12M/25M
> [INFO]
> ------------------------------------------------------------------------
>
> Basically, I manually deployed the two dll's to Maven's repository (via mvn
> install:install-file) and then made the following changes to my pom:
>
> ...
> <dependency>
>      <groupId>org.git.systems</groupId>
>      <artifactId>Curvi</artifactId>
>      <version>1.0.0</version>
>      <scope>compile</scope>
> <type>dll</type>
>    </dependency>
> <dependency>
>      <groupId>org.git.systems</groupId>
>      <artifactId>OptimizedSolver</artifactId>
>      <version>1.0.0</version>
>      <scope>compile</scope>
> <type>dll</type>
>    </dependency>
> ...
>
>
> ...
> <plugin>
>        <groupId>org.apache.maven.plugins</groupId>
>        <artifactId>maven-dependency-plugin</artifactId>
>        <executions>
>          <execution>
>            <id>copy</id>
>            <phase>package</phase>
>            <goals>
>              <goal>copy</goal>
>            </goals>
>            <configuration>
>              <artifactItems>
>                <artifactItem>
>                  <groupId>org.git.systems</groupId>
>                  <artifactId>Curvi</artifactId>
>                  <version>1.0.0</version>
>                  <type>dll</type>
>                  <overWrite>true</overWrite>
>                  <outputDirectory>/testingDLL</outputDirectory>
>                  <destFileName>Curvi</destFileName>
>                </artifactItem>
>              </artifactItems>
>            </configuration>
>          </execution>
>        </executions>
>      </plugin>
>
> </plugins>
>
> </build>
> </project>
>
>
> Is there something I did wrong along the process?
>
> Thanks, I can't wait to get this to work.
>
>
> On Tue, Jun 17, 2008 at 08:12, Mikel Cármenes Cavia <[EMAIL PROTECTED]>
> wrote:
>
> > I will give those steps a shot today and let you all know if I run into
> any
> > problems. It sounds like a pretty logical thing to do actually, and
> > fortunately I do not require cross-platform compilation and support at
> this
> > point.
> > One quick question though, when you say that I should use the dependency
> > plugin to copy the DLL's to the target directory or other suitable
> location,
> > could I specify that the DLL's be put inside the jar? (that is, in the
> > resources folder).
> >
> > Thanks!
> >
> >
> > On Mon, Jun 16, 2008 at 15:37, Kalle Korhonen <
> [EMAIL PROTECTED]>
> > wrote:
> >
> >> If you don't need to worry about cross-platform compilation & support
> (and
> >> sounds like you don't), the most straight-forwarded way to do this is to
> >> deploy your dll to a Maven repository with type "dll", declare a
> >> straight-up
> >> dependency to it in your pom and then use the dependency plugin to copy
> >> the
> >> lib to the target dir or other suitable location for development
> >> environment
> >> and structure you assembly (or whatever is the format of the actual
> >> delivery) similarly. If cross-platform support is desired, nar plugin (
> >> http://java.freehep.org/freehep-nar-plugin/intro.html) is a bit more
> >> involving but simplifies things greatly. However, using it requires some
> >> code changes.
> >>
> >> Kalle
> >>
> >>
> >> On Mon, Jun 16, 2008 at 11:19 AM, Mikel Cármenes Cavia <
> [EMAIL PROTECTED]>
> >> wrote:
> >>
> >> > Hey guys,
> >> > I need to include three DLL's in my Maven project. Prior to deciding
> to
> >> > email the list, I have looked around the archives, and haven't been
> able
> >> to
> >> > find anything that would seem to answer my problem (which is a very
> easy
> >> > one
> >> > in nature).
> >> >
> >> > I use JNA to interface with two of the three DLL's (the third one is
> for
> >> > Jacob, and its location needs to be set as a system variable).
> >> >
> >> > In Java, I do the following:
> >> >
> >> > URL libURL = this.getClass().getResource("/org/git/systems/DLLs/");
> >> > System.setProperty("jna.library.path", libURL.getPath());
> >> >
> >> > And then declare the following interface
> >> >
> >> > public interface CurviLibrary extends Library {
> >> > CurviLibrary CurviInitialization = (CurviLibrary)
> >> > Native.loadLibrary("Curvi",CurviLibrary.class);
> >> > CurviLibrary OptimizedSolver = (CurviLibrary)
> >> > Native.loadLibrary("OptimizedSolver",CurviLibrary.class);
> >> > DoubleByReference GIT_CURVIG(float[] timeData, float[] rawData,
> float[]
> >> > relax, int rawDataSize, double alphaValue,
> >> > long numberOfBins);
> >> > }
> >> >
> >> > So when compiled via Eclipse, this works like a charm. I have tried
> >> placing
> >> > the DLL's within /main/resources/org/git/systems/DLLs but this does
> not
> >> > seem
> >> > to work, as the jar looks in
> >> >
> >> >
> >>
> file:/C:/DEV/Maven/GITSYSTEMS/target/GITSYSTEMS-1.0-jar-with-dependencies.jar!/org/git/systems/DLLs/
> >> > which would make sense, if only a jar wasn't a package.
> >> >
> >> > How may I go about adding these DLLs to my Maven project, without
> having
> >> to
> >> > modify the existing Java code?
> >> >
> >> > I am assuming they will have to go outside of the jar, but I am unsure
> >> as
> >> > to
> >> > how to reference and go from there.
> >> >
> >> > Thanks guys!
> >> >
> >>
> >
> >
>

Reply via email to