将Jar包添加至Linux服务器本地仓库遇读取失败问题求助
Hey there! Let's break down why your ls-client.jar works locally but fails on Linux, and get this sorted out for you.
First, let's clear up your suspicion: your groupId and artifactId are not the root cause here. The real problem comes from how Maven handles the system scope dependency you're using.
Why it works locally but breaks on Linux
When you use <scope>system</scope>, Maven treats this dependency as a local system resource—it doesn't package it into your final build artifact (like a WAR or JAR file). On your local machine, the lib folder exists right at ${project.basedir}/lib, so the JVM can easily find the jar. But when you deploy to Linux:
- The
libfolder might not be included in the deployed project structure - Even if it is, Linux's case-sensitive file system could trip you up (double-check that
ls-client.jarisn't namedLS-Client.jaror similar) - The server's JVM can't access the jar because it's not added to the application's runtime classpath
Solution 1: Install the jar to your local Maven Repository (Recommended)
This is the cleanest approach—by installing the jar into your local repo, Maven will treat it like any other standard dependency and include it in your build automatically. Run this command in your terminal:
mvn install:install-file \ -Dfile=~/test2000/lib/ls-client.jar \ -DgroupId=com.lightstreamer \ -DartifactId=ls-client \ -Dversion=2.5.2 \ -Dpackaging=jar
Then update your Maven dependency to remove the system scope and systemPath:
<dependency> <groupId>com.lightstreamer</groupId> <artifactId>ls-client</artifactId> <version>2.5.2</version> </dependency>
Now when you build and deploy, Maven will include the jar in your artifact, and the Linux server will find it without any path-related issues.
Solution 2: Package the system scope jar into your build artifact
If you can't install the jar to your local repo (e.g., for shared team environments), you can configure Maven to copy the lib folder's jars directly into your final build. For a WAR project, add this to your pom.xml under the <build> section:
<build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-war-plugin</artifactId> <version>3.3.2</version> <configuration> <webResources> <resource> <directory>${project.basedir}/lib</directory> <targetPath>WEB-INF/lib</targetPath> <includes> <include>*.jar</include> </includes> </resource> </webResources> </configuration> </plugin> </plugins> </build>
For a JAR project, use the maven-assembly-plugin to create a "fat jar" that bundles all dependencies, including your local jar file.
Quick Pre-Deployment Check
- If using Solution 2, confirm the
libfolder is included in your deployment package - Double-check file and folder names on Linux—case sensitivity is a common gotcha!
内容的提问来源于stack exchange,提问作者ismael




