<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>2.4.2</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
<configuration>
<transformers>
<transformer
implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
<mainClass>uk.xxx.mobiledock.PCSyncApplication</mainClass>
</transformer>
</transformers>
</configuration>
</execution>
</executions>
<dependencies>
<dependency>
<groupId>uk.xxx</groupId>
<artifactId>mobile-dock-support</artifactId>
<version>0.0.1-SNAPSHOT</version>
<scope>system</scope>
<systemPath>${project.build.directory}/../src/main/libs/mobile-dock-support.jar</systemPath>
</dependency>
</dependencies>
</plugin>
java.lang.NoClassDefFoundError: uk/xxx/mobiledock/MobileDockException
at java.lang.Class.getDeclaredMethods0(Native Method)
at java.lang.Class.privateGetDeclaredMethods(Unknown Source)
at java.lang.Class.privateGetMethodRecursive(Unknown Source)
at java.lang.Class.getMethod0(Unknown Source)
at java.lang.Class.getMethod(Unknown Source)
at sun.launcher.LauncherHelper.validateMainClass(Unknown Source)
at sun.launcher.LauncherHelper.checkAndLoadMain(Unknown Source)
Caused by: java.lang.ClassNotFoundException: uk.xxx.mobiledock.MobileDockException
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
... 7 more
Error: A JNI error has occurred, please check your installation and try again
Exception in thread "main"
我还设置了exec maven插件,运行mvn exec:java-dexec.mainclass=uk.xxx.mobileDock.pcsyncApplication
按预期运行程序。
下面是如何设置exec maven插件的
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<version>1.4.0</version>
<executions>
<execution>
<goals>
<goal>java</goal>
</goals>
</execution>
</executions>
<configuration>
<includePluginDependencies>true</includePluginDependencies>
<mainClass>uk.xxx.mobiledock.PCSyncApplication</mainClass>
</configuration>
<dependencies>
<dependency>
<groupId>uk.xxx</groupId>
<artifactId>mobile-dock-support</artifactId>
<version>0.0.1-SNAPSHOT</version>
<scope>system</scope>
<systemPath>${project.build.directory}/../src/main/libs/mobile-dock-support.jar</systemPath>
</dependency>
</dependencies>
</plugin>
好的,看来问题是shade插件没有复制系统依赖到uber Jar。有几种“正确”的方法可以解决这个问题
>
使用mvn install
将依赖项安装到本地maven存储库
使用存储库管理器,如Nexus
<plugin>
<artifactId>maven-dependency-plugin</artifactId>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>copy-dependencies</goal>
</goals>
<configuration>
<outputDirectory>${project.build.directory}/lib</outputDirectory>
<includeArtifactIds>mobile-dock-support</includeArtifactIds>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>2.4.2</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
<configuration>
<transformers>
<transformer
implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
<manifestEntries>
<Main-Class>uk.xxx.mobiledock.PCSyncApplication</Main-Class>
<Class-Path>lib/mobile-dock-support-${mobile-dock-support.version}.jar</Class-Path>
</manifestEntries>
</transformer>
</transformers>
</configuration>
</execution>
</executions>
</plugin>
我在Eclipse中有一个maven项目。在src/main/resources下,我有一个名为“directoryToCopy”的目录,其中包含文件。一旦我运行了我的项目,我想将“directoryToCopy”复制到桌面上的本地目录“localDirec”下。 我用了这个: 这在本地工作正常,但是当我想将其作为可执行jar文件运行时,我会得到NullPointerException。 请问有什
我在Netbeans IDE 8.0.1中编写了一个名为SampleChat的Java GUI程序,并使用“Clean and Build”函数创建了一个jar文件。 我转到Netbeans创建的'dist'目录,双击它生成的jar文件。打开一个cmd窗口,其行如下: 我打算从一个U盘共享程序,所以它是至关重要的,唯一的要求是一个JVM,鼠标,也许一些手指来双击它。 我想出的一个尴尬的解决方案是编
可执行性(Executable) Stylus可执行代码 正因有stylus可执行性,Stylus才能将自身转换成CSS. Usage: stylus [options] [command] [ out]] [file|dir ...] Commands: help <prop> Opens help info for <prop> in
终端中使用lldb运行可执行文件 进入lldb环境, 在终端内输入lldb回车 lldb 使用file命令, 将可执行文件包装成一个target (lldb) file test Current executable set to '/Users/shenyj/Documents/CodeForTest/staticOCLib/test' (x86_64). 运行可执行文件, 在刚刚的l
工具:Win7、Launch4J3.5、简单的Hello world Java控制台应用程序(绑定在JAR文件中) 大家好, 我有一个基本的JAVA控制台应用程序,它不请求任何输入,只是一个打开控制台窗口并显示Hello World文本的简单应用程序。 包装程序清单:C:\launch4j\manifest\uac.exe.manifest(也尝试保留此空白) 其余的都是默认的。
我试图理解java中完整期货的非阻塞回调性质 有了上面的代码,我总是看到下面看到的输出 线程名称ForkJoinPool.common池工人-1 thenApply Thread name main thenApply Thread name main thenAcceptThread name main Thread name main 这个顺序似乎建议主线程等待所有Futures线程的执行。
我用reactiveX Zip做了一些实验,我注意到我在zip中定义的可观察性是一个接一个地执行的。我认为zip的好处是,zip中定义的每一个可观察到的线程都是由一个线程执行的,所以所有这些线程都是并行执行的。有什么方法能达到我想要的吗?。这是我的zip例子
我创建了一个个人使用的基本应用程序。我的应用程序的支持使用快速Api和SQLite数据库。通常要运行我的启动和运行我的后端服务器,我必须使用以下命令: 我以前见过其他人创建python可执行文件。我也想这样做,但我需要它来启动uvicorn服务器。如何创建运行uvicorn服务器的python可执行文件? 还是只编写一个执行此操作的批处理脚本更好?