Project中如何正确导入第三方jar包

今天遇到一个问题,第三方ar包中的类怎么也无法导入,直接导致不能用。百思不得其解(......),在一番搜索之后问题得解。

从 J2SE 1.4 开始,Java 编译器不再支持 import 进未命包名的类、接口。也就是说,你不能在一个非默认包的类中访问默认包中的类或方法。既不能import,也不能直接使用。有大牛直接找到了官方的解释文档如下(竟然能这么精确定位,太牛了):
The compiler now rejects import statements that import a type from the unnamed namespace. Previous versions of the compiler would accept such import declarations, even though they were arguably not allowed by the language (because the type name appearing in the import clause is not in scope). The specification is being clarified to state clearly that you cannot have a simple name in an import statement, nor can you import from the unnamed namespace.

我用的两个第三方jar包为stdlib和algs4用官话说就是:The libraries in stdlib.jar and algs4.jar are in the "default" package. In Java, you can't access classes in the default package from a named package.

关于这个怎么破?据目测有两种方法:其一,自己的java文件也不要包名,就是默认包了,直接暴力之。另一种就是 利用反射机制:但似乎比较繁琐,有网友的例子如下:
非默认包是可以调用到默认包里的类的。这里要用到反射。比如:在默认包里有个类:

public class DefaultPackage {
public void disp(){
  System.out.println("Hello World!");
}
}
而如果你想再包test下的类中调用disp()方法可以这样:
package test;

import java.lang.reflect.*;

public class TestDefaultPackage {

public static void main(String[] args) throws Exception{
Class c = Class.forName("DefaultPackage");
Method m = c.getDeclaredMethod("disp", null);
m.invoke(c.newInstance(), null);
}

}

如果jar包不想改,只能用上面的方法,但是推荐的做法是所以类都放在非默认包下(named space),否则项目模块分类,类越多,越复杂,阅读代码越困难.。这样的细节问题可能平时也不会遇到,遇到了还真不知道怎么解决。各种Google 、百度之后才破。感谢csdn网友:火龙果被占用了

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 将Maven项目打包成第三方JAR包并将POM文件的依赖项打入其,可以按照以下步骤进行操作: 1. 在Maven项目的pom.xml文件,设置打包类型为jar,并确保所有依赖项正确配置。 2. 执行Maven打包命令,生成JAR文件。在项目根目录下运行以下命令: ``` mvn clean package ``` 3. Maven将根据pom.xml文件的配置,将JAR包和相关的依赖项一并打包到target目录的生成的JAR文件。 4. 在生成的JAR文件可以找到META-INF目录,其包含MANIFEST.MF文件。 5. 对MANIFEST.MF文件进行编辑,添加以下内容: ``` Class-Path: <path-to-dependency-jar1> <path-to-dependency-jar2> ... ``` 其,`<path-to-dependency-jar>`是各个依赖项JAR文件的相对或绝对路径。请确保路径正确并在每个JAR文件之间使用空格进行分隔。 6. 保存并关闭MANIFEST.MF文件。 7. 最后,可以将生成的JAR文件作为第三方JAR包进行使用,并且该JAR包已经包含了所有的依赖项JAR文件。 总结:通过适当的配置和编辑MANIFEST.MF文件,可以将Maven项目打包成第三方JAR包,并将pom.xml的依赖项打包入其,从而方便在其他项目引用JAR包。 ### 回答2: Maven是一个Java项目管理工具,可以用来管理项目的依赖、构建和打包。将项目打包为第三方jar包并将pom依赖包打入进来的方法如下: 首先,在项目的pom.xml文件配置打包属性。将项目打包方式设置为jar,在该项目的构建插件添加依赖插件。例如: ```xml <build> <plugins> <!-- 设置打包方式为jar --> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-jar-plugin</artifactId> <version>3.2.0</version> <configuration> <archive> <manifest> <addClasspath>true</addClasspath> <classpathPrefix>lib/</classpathPrefix> <mainClass>com.example.MainClass</mainClass> </manifest> </archive> </configuration> </plugin> <!-- 添加依赖插件 --> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-dependency-plugin</artifactId> <version>3.2.0</version> <executions> <execution> <goals> <goal>copy-dependencies</goal> </goals> <configuration> <outputDirectory>${project.build.directory}/lib</outputDirectory> </configuration> </execution> </executions> </plugin> </plugins> </build> ``` 其次,运行以下Maven命令进行打包: ```bash mvn clean package ``` 成功运行后,会在项目的target目录下生成一个打包好的jar文件。在该目录下还会有一个lib目录,其包含了所有项目依赖的jar文件。 最后,可以将生成的jar包和lib目录一起打包或发布,使其作为第三方jar包使用。其他使用者只需要导入jar文件,并将依赖的jar文件一同放入classpath,即可使用该项目的功能。 通过以上步骤,我们可以将一个Java项目打包为第三方jar包,并将pom依赖包一同打入进来,方便其他项目使用和引入依赖。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值