我在将类从类库导入到我的项目时遇到问题。请查看屏幕截图。
我在Eclipse和IntelliJ中尝试了几种方法,既可以直接添加,也可以通过Maven添加。
在IntelliJ中,我尝试:
1.项目结构-模块-附件-添加jar。
1.尝试创建一个lib文件夹,将其添加为库,并将jar放入其中,然后设置为依赖项。
1.通过maven pom.xml添加到jar的直接路径。
在Eclipse中,我尝试:
- Java构建路径并将其添加到我的构建路径中。
1.更新项目。
下面是我的pom.xml来获取本地jar。
<dependency>
<groupId>uk.co.pervasive_intelligence.simulator</groupId>
<artifactId>protocol</artifactId>
<version>1.0</version>
<scope>system</scope>
<systemPath>C:\Users\Vas-DELL\Desktop\simulator-1.2.2.jar</systemPath>
</dependency>
字符串
奇怪的是,我可以看到jar和jar里面的类(截图)。但是仍然不能导入它们。如果有什么我可以提供的,请让我知道。
x1c 0d1x的数据
4条答案
按热度按时间ax6ht2ek1#
在项目文件夹的根目录下创建一个lib/ dir。把你的Jar放在那里。把它添加到你的pom.xml中:
字符串
不要使用\作为路径分隔符(即使您使用的是Windows)
从命令行运行
mvn clean package
您也可以尝试在本地存储库中手动安装依赖项:
mvn install:install-file -Dfile=simulator-1.2.2.jar -DgroupId=uk.co.pervasive_intelligence.simulator -DartifactId=protocol -Dversion=1.0 -Dpackaging=jar
个然后将此添加到您的pom中:
型
编辑:
jar文件没有标准java库的结构。为了将该jar用作库,类的包应该作为文件夹存在于jar文件的基目录(或根目录)中。例如:
型
作为一个库jar文件,MANIFEST.MF的内容可以简单到
型
希望这有帮助
emeijp432#
co.uk.包中的类文件在模拟器jar中打包的BOOT-INF/classes中,无法直接访问,因为它不是jar默认类路径(“.”)的一部分。
要更好地了解jar类路径,请查看What's the default classpath when not specifying classpath?
模拟器jar需要打包classpath入口,在classpath中添加BOOT-INF/classes/...,以允许访问BOOT-INF/classes下的类。
例如,要允许使用maven访问包uk.co. prosperous_intelligence.simulator.Component中的类,可以这样做:
字符串
6ljaweal3#
如果你使用SpringBoot和InteliJ Idea,当你有excute mvn clean package命令时,你应该在maven pom中使用packaging.jar.original。
字符串
thtygnil4#
我也遇到过类似的问题,在分析其他工作库的内部jar结构时,我注意到我试图导入的自定义库的结构不正确,@Martin萨拉戈萨在his answer中指出:
jar文件没有标准java库的结构,为了使用jar作为库,类的包应该作为文件夹存在于jar文件的基目录(或根目录)中。
为了解决这个问题,我已经将导入的自定义库的
build
pom部分替换为以下内容:字符串