精华内容
下载资源
问答
  • maven工程加载本地jar包(三方jar包) 1 jar包放在本地,通过pom文件增加配置,在本地私有仓库中相应...当根据配置文件加载jar包时,本地仓库有这个jar包,就不会去远程仓库取jar包了(远程仓库并没有)。 应用场景:在

    maven工程加载本地jar包(三方jar包)

    1 jar包放在本地,通过pom文件增加配置,在本地私有仓库中相应的位置增加jar包,使pom文件能加载到本地的jar包,从而在更新时不去请求公有仓库的jar包。
    2 多个项目组开发的情况,最好添加到共有的放置三方jar包的路径。

    maven工程加载本地jar包(模拟从仓库加载,实际仓库并没有该jar)

    总体来说,就是通过修改配置文件和本地仓库。当根据配置文件加载jar包时,本地仓库有这个jar包,就不会去远程仓库取jar包了(远程仓库并没有)。

    应用场景:在各项目中有一些独特的需求时,需要jar包,远程仓库中没有的情况下可以使用这个策略。

    (以本地jar包 xml2json.jar为例)
    1 配置依赖关系(pom.xml文件)

    		<dependency>
    			<groupId>com.aaa.wsg</groupId>
    			<artifactId>xml2json</artifactId>
    			<version>1.0</version>
    		</dependency>
    

    2 修改本地仓库
    配置完依赖关系,会生成相应路径的文件夹,去远程仓库获取jar包的时候是找不到的。我们要手动在相应的目录增加这个jar包。
    在这里插入图片描述

    3 单独增加jar包后,可以看一下应用中是不是已经引用jar包。(不报错了)
    有的maven工程,在这一步后就不报错了。有的报错。
    原因没有细究。直接附上报错的解决办法。
    4 单独增加jar包后,本地应用报错,找不到jar包。给应用执行install命令,查看原因。
    在这里插入图片描述

    5 jar包加载不成功原因是找不到jar包相应的pom文件。(install失败的原因)
    因为不需要依赖其他jar包,直接写个空的文件即可。
    在这里插入图片描述

    其他的pom文件,可以拿来对比一下。
    在这里插入图片描述

    通过maven配置将jar更新到三方jar包仓库

    待更新

    展开全文
  • Eclipse中maven远程仓库中下载jar包有时会很慢,有些甚至进度停止不动,这个时候我们可能会终止当前下载,但是终止jar包下载后会出现一个问题,再次打开Eclipse时,你会发现提示你项目中依赖的jar包找不到,如下图...

    eclipse中maven项目jar包不会自动下载解决办法

    Eclipse中maven从远程仓库中下载jar包有时会很慢,有些甚至进度停止不动,这个时候我们可能会终止当前下载,但是终止jar包下载后会出现一个问题,再次打开Eclipse时,你会发现提示你项目中依赖的jar包找不到,如下图所示,项目右键打---》Build Path---》Configure Build Path 打开项目的 Java Build Path 在 Libraries 页签下

    Maven Dependenicies 你会发现报错提示 依赖的jar包 missing如下图所示

     

    此时我们可以通过如下方案解决

    1.找到我们的本地maven仓库目录 我的是 H:\Java\maven\Repository

    2.搜索出该目录下的*lastUpdated.properties文件并删除,如下图所示,可以通过模糊搜索匹配出这样的文件

     

    3.Maven 更新当前项目,maven就会继续下载缺失的依赖jar包,直至缺失jar包下载完成,上述问题就解决了。

    展开全文
  • 因为我现在没有一套随便实验的flink集群,也没有阿里云的oss,所以就只好做个最简单的实验,证明我是可以从远程加载jar包然后使用jar包中的类的。 首先,需要先创建一个maven工程,创建一个类叫...

    背景

            有一个网友看了我的《Flink的classLoader加载机制(推测)-- 记一次程序问题中的探索》这篇文章,向我提问了一个问题,虽然这个问题我没有解决,但是我打算做一个小实验来验证一下解决思路的可行性。问题如下:

            

            得知该朋友已经解决此问题,我只想到了前期思路,后续的class not found问题其实是jobmanager和taskmanager不在一个jvm中导致的,很厉害,学习了。他的文章:https://www.toutiao.com/i6883793897495986691/

    实验

            因为我现在没有一套随便实验的flink集群,也没有阿里云的oss,所以就只好做个最简单的实验,证明我是可以从远程加载jar包然后使用jar包中的类的。

            首先,需要先创建一个maven工程,创建一个类叫做Remote,随便写一个可以打印东西的方法,然后把这个工程打成一个jar包。(当然,如果已经有一个jar包了,那就直接用也行)

            然后,在jar包所在的路径下,用python启动一个http服务,命令:  python -m SimpleHTTPServer 8888 

            最后用下面的代码就可以加载这个jar包并加载里面的类,然后执行类里的方法了。

    public class Test {
    
        public static void main(String[] args) throws MalformedURLException, NoSuchMethodException, InvocationTargetException, IllegalAccessException, ClassNotFoundException, InstantiationException {
            URLClassLoader loader = (URLClassLoader) Test.class.getClassLoader();
            // 获取本地jar文件的URL
    //        File jarFile = new File("/Users/zgy/IdeaProjects/test/target/maven-thrift-client-0.0.1-SNAPSHOT.jar");
    //        URL targetUrl = jarFile.toURI().toURL();
            // 获取远程jar文件的URL
            URL targetUrl = new URL("http://localhost:8888/target/maven-thrift-client-0.0.1-SNAPSHOT.jar");
    
            // 这个校验是为了避免重复加载的
            boolean isLoader = false;
            for (URL url : loader.getURLs()) {
                if (url.equals(targetUrl)) {
                    isLoader = true;
                    break;
                }
            }
    
            // 如果没有加载,通过反射获取URLClassLoader.allURL方法来加载jar包
            if (!isLoader) {
                Method add = URLClassLoader.class.getDeclaredMethod("addURL", new Class[]{URL.class});
                add.setAccessible(true);
                add.invoke(loader, targetUrl);
            }
    
            // 加载指定的class,然后为其创建对象后执行其方法,这些操作都是用反射去做的
            Class<?> remoteClass = loader.loadClass("Remote");
            Object remoteInstance = remoteClass.newInstance();
            Method method = remoteClass.getDeclaredMethod("func");
            method.setAccessible(true);
            System.out.println(method.invoke(remoteInstance));
        }
    }

            URLClassLoader既可以加载本地文件系统的jar包,也可以加载远程jar包。我猜测这些应该使用统一的io来实现的。

    后记

            其实这个实验只是说明了URLClassLoader的能力和使用方法,网上有很多参考资料可以做到这个功能。但是这个方法还有一些缺陷,比如在我使用http协议加载远程jar包的时候,加载速度明显比本地要慢很多。这样的话,其实可以考虑加载之前先下载jar包,然后再加载。(如果下载jar包,是否可以直接下载到ext目录下,让jvm的extensionClassLoader去加载这个jar包呢?)

            另外,这个思路需要用反射去调用类和方法,使用起来很麻烦。我一度怀疑自己做的有问题,为啥jvm不需要这么复杂呢?但是仔细一想,jvm在编译期是需要对应的jar包在的,起码对应的接口要有;运行期也是需要有jar包在,加载后直接使用类去运行了。我们这里做的事情,有点像jvm在运行期加载jar包和找到jar包里的类的过程,而不仅仅是在外部调用类和执行类方法。

    参考文章

    (1)这篇文章代码很丰富,主题是如何加载jar包,后边的一些功能对于本文章来说不太需要看https://www.cnblogs.com/itboys/p/11011585.html  

    (2)最开始看的这篇文章,比较简单,但也胜在简单 https://blog.csdn.net/fd2025/article/details/80538468

     

     

     

     

    展开全文
  • maven引用本地jar

    2020-12-10 22:56:46
    远程仓库不存在某jar包,手工加载后,打入仓库 执行指令 在控制台执行: mvninstall:install-file-Dfile=jar包的位置 -DgroupId=groupId -DartifactId=artifactId -Dversion=version -Dpackaging=jar 其中,...

    一、maven打包本地jar包到本地仓库

    使用场景

    1. maven依赖需要对本地自己写的jar包进行引用;
    2. 远程仓库不存在某jar包,手工加载后,打入仓库

     

    执行指令

    在控制台执行:

    mvn install:install-file -Dfile=jar包的位置  -DgroupId=groupId  -DartifactId=artifactId  -Dversion=version  -Dpackaging=jar

    其中,groupId,artifactId,version三个字段值可以自定义赋值。但要保证跟pom.xml中对应。

    打包命令执行成功后,maven执行reimport,检查pom.xml是否还有报错。

     

    示例:

    mvn install:install-file -Dfile=D:\setup\fastdfs-client-java-1.27-RELEASE.jar -DgroupId=org.csource -DartifactId=fastdfs-client-java -Dversion=1.27-SNAPSHOT -Dpackaging=jar

     

    错误

    Q:报错:[ERROR] The goal you specified requires a project to execute but there is no POM in this directory

    A:

    解决方案一:将相关参数加上引号

    mvn install:install-file "-Dfile=D:\setup\fastdfs-client-java-1.27-RELEASE.jar" "-DgroupId=org.csource" "-DartifactId=fastdfs-client-java" "-Dversion=1.27-SNAPSHOT" "-Dpackaging=jar"

    大神指出该问题主要是使用PowerShell执行install命令时的错误,且可能跟maven版本有关。

    详见:

    https://stackoverflow.com/questions/16348459/error-the-goal-you-specified-requires-a-project-to-execute-but-there-is-no-pom

    解决方案二:检查一下install命令是否全是英文字符

     

    章节一参考:

    https://www.cnblogs.com/panchanggui/p/10696458.html

     

    二、pom.xml指定本地路径

    <dependency>
          <groupId>your.organization</groupId>
          <artifactId>your-sdk-util</artifactId>
          <version>1.1.1.0</version>
          <scope>system</scope>
          <systemPath>${pom.basedir}/lib/your-sdk-ver.jar</systemPath>
    </dependency>

    其中,${pom.basedir}表示项目根路径。groupId,artifactId,version自定义设置,但是scope必须设置成system。

     

    注意

    这样设置后pom.xml不会报错,但是如果需要使用maven进行打包时,scope为system的依赖包不会被maven打包进项目。

    需要为pom.xml的打包插件配置includeSystemScope属性。

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <configuration>
                    <includeSystemScope>true</includeSystemScope>
                    <fork>true</fork>
                </configuration>
            </plugin>
        </plugins>
    </build>

    (未实际验证,参考:https://blog.csdn.net/beeworkshop/article/details/104727363

     

    展开全文
  • 项目结构:maven项目,且配置了公司内网搭建的私服地址发现问题:一旦离开私服所在的公司网络,install项目的时候就会失败,问题是会连接私服读取jar,即使本地maven仓库已经包含了该jar 解决方案 仔细查看maven ...
  • maven引入本地jar

    2018-09-17 14:37:46
    maven项目中有的时候不能远程下载jar,需要自己把jar放入项目中,在maven就需要引用,具体的引用方式如下: &lt;!--加载本地项目jar包--&gt; &lt;!-- json --&gt; &lt;dependency&gt; &...
  • Java加载本地/远程jar

    千次阅读 2018-10-17 11:33:21
    文章目录一般使用jar的方式...在开发过程中,有时候需要根据配置,动态的加载本地、远程jar包到当前的jvm中,代码实现如下: LoadJarUtil类: import org.slf4j.Logger; import org.slf4j.LoggerFactory; import ...
  • maven加载oracle驱动

    2013-04-28 11:48:44
    因为ojdbc14-10.2.0.4.0.jar是要收费的,所以Maven远程库里没有这个资源,只能通过配置本地库来加载到J2EE工程里,做法如下:   第一步:在网上下载ojdbc14.jar,然后改名为ojdbc14-10.2.0.4.0.jar,这个地方...
  • 用maven管理项目时,需要通过pom添加jar,进行maven加载,有时候在公司你需要添加公司的私服maven仓库进行拉取依赖包 假设当前项目需要用到仓库 (http://192.168.80.204:8081/nexus/content/groups/public/),此时可...
  • 原理:maven加载jar包过程,默认的是先扫描本地仓库,若本地仓库没有,则扫描远程仓库下载。默认的conf/settings.xml文件没有配置远程仓库,所以扫描的是maven的中央仓库(在国外),所以慢。 解决方法:配置国内...
  • 远程仓库 -> 中央仓库获取依赖的jar。 但是如果仓库中不存在某个jar,并且这个jar由某些组织自行维护,并不会上传到仓库,这种情况,该怎么处理呢? 解决方案是,在pom文件中配置: <build> &l...
  • 使用tomcat远程部署 1.1遇到的问题: 项目中需要引用第三方jar包,在使用mvn打包项目的时候,会报错'dependencies.dependency.systemPath'for com.dingtalk.api:taobao-sdk-java:jar must be omitted.问题的原因在于...
  • 在使用maven开发工程时,模块A可能会依赖模块B的jar包,如果两个模块都是在一个工程里,只需要在模块A的pom文件中加入模块B的依赖信息,模块A就可以加载模块B的jar包。但如果模块A与模块B在不同的工程,甚至是由不同...
  • 使用tomcat远程部署 1.1遇到的问题: 项目中需要引用第三方jar包,在使用mvn打包项目的时候,会报错'dependencies.dependency.systemPath'for com.dingtalk.api:taobao-sdk-java:jar must be omitted.问题的原因在于...
  • maven仓库加载问题

    2019-05-27 17:26:42
    maven仓库加载问题 前言 maven是当前非常流行的项目管理工具,各...本地仓库在本人看来就是一个类似于缓存的地方,当构建新的项目时,根据pom.xml文件中的依赖去远程仓库下载jar包,然后将其存放在本地仓库,当下...
  • 因为ojdbc14-10.2.0.4.0.jar是要收费的,所以Maven远程库里没有这个资源,只能通过配置本地库来加载到J2EE工程里,做法如下: 第一步:在网上下载ojdbc14.jar,然后改名为ojdbc14-10.2.0.4.0.jar,这个地方一定要...
  • 因为ojdbc14-10.2.0.3.0.jar是要收费的,所以Maven远程库里没有这个资源,只能通过配置本地库来加载到J2EE工程里,做法如下:第一步:在网上下载ojdbc14.jar,然后改名为ojdbc14-10.2.0.3.0.jar,这个地方一定要...
  • 自己在创建一个spring boot项目 或者导入一个spring boot项目时;maven jar包报错;...3.删除maven仓库下的springframework中对应的jar包文件,重新 reimport(一定要等到maven加载完) 4.可能jar依赖包不全 在...
  • idea maven下载jar包失败解决办法

    千次阅读 2020-03-24 10:55:49
    相信大家在idea 中使用maven中导入依赖,而本地仓库没有,需要从远程仓库下载时,都会遇到过下载失败,在maven repository中残留.lastUpdated文件. 如何解决,并修复这些下载不完整的jar包依赖呢? 首先点击右侧maven栏 ...
  • Maven远程加载jar失败??那就将jar直接安装到本地仓库吧 前提是maven已经安装好,并且下载了所需的jar包 打开cmd,然后根据maven引入jar的格式: 根据该jarmaven中引入的格式写命令语句:(注意空格和符号不...
  • mvn clean install -e U 发现加载这个jar包时直接访问远程仓库,都没有从本地查找一下 解决办法 把本地仓库的jar 包目录删除掉,使用mvn install 命令,手动install 进仓库。 mvn inst...
  • 由于网络不好,在加载项目的时候,从远程仓库下载jar失败,在本地的maven仓库中出现很多以.lastUpdated和.sha1-in-progress后缀的文件和jar包. 解决方案: 由于下载失败的jar包太多,所以需要使用jav...
  • 最近公司的项目中引入了第三方的jar包,数量比较多,再一个考虑只有一个项目单独使用,所以不考虑放到远程服务器仓库上,只是在工程中打包的时候,能够编译打包成功就可以。 上面就是解决办法,核心的就是截图标红...
  • 如果创建项目后,mavenjar不能正常加载,报错Could not transfer artifact org.apache.maven.plugins:maven-clean-plugin...,这个问题的解决方案同样适用于 导入依赖jar失败,提示无法从xxxxxxx(配置的远程仓库...
  • 这种方式也有一定的问题,如果本地maven仓库有这个依赖,就会从直接加载本地依赖,如果本地仓库没有该依赖,那么还是会从远程下载。但是下载的jar不是存储在本地maven仓库中,而是放在自己的缓存目录中。一般默认为~...
  • maven

    2020-09-22 10:44:06
    声明了三要素,一个坐标唯一定位了一个依赖的某个版本的jar包,maven会自动到远程的中央仓库里面去,下载到本地来,在打包的时候,就会自动使用,编译 依赖范围 <scope></scope> maven 有三套...

空空如也

空空如也

1 2 3 4 5
收藏数 96
精华内容 38
关键字:

maven加载远程jar