对于maven是小白,刚开始同事给了一个java文件,需要运行起来
1. 尝试一(因为一个java文件开始想就不用android studio了)
看了之后以为安装jdk运行一下就ok了,但是文件中依赖了很多其他类,普通的依赖还可以搞定但是有一个是geotools包(gis方面计算的吧不太清楚),一无所知的情况下去官网下载了bin包,打开一看全是jar,应该就是依赖了,再就是下载了其他依赖所需的jar包,然后就开始编译了(此处maven官网)
此处Maven仓库一直大有用处:maven仓库地址
还发现一个网站不知道是啥但有用:仓库下载
1.编译问题
1)开始是UTF-8编码问题,这个命令行增加编码格式;
2)然后就是缺少包,类的各种问题,就是下载补上喽;
3)类中引用了其他类,我创建好放到同一目录下编译,一直提示类找不到;后来没有办法把它弄成内部类可以了;
编译命令:
javac -Djava.ext.dirs=E:\java\libs -encoding UTF-8 GpsSort.java
2.运行问题
1)错误: 找不到或无法加载主类 A : 类中有原来的包名,删除包名再运行就可以了
2)log4j-over-slf4j.jar和slf4j-log4j12-1.7.30.jar冲突会造成内存溢出问题,研究好久发现,这二者不可以共存,所以必须删除一个,引用了Logger类打印可以删除了log4j-over-slf4j.jar
3)再次编译找不其他的类,一堆堆,在maven仓库找了半天没找到,一个字累
超找说geotools包离线加载有问题,必须要在线加载,所以此方法放弃
4)运行命令
java -Djava.ext.dirs=E:\java\libs GpsSort
2.尝试二
开始尝试Maven加载,geotools官网 Quickstart 开始按照指南引入依赖
1.idea工具早就安装了,但是如何使用我却空白,对于Maven项目也是空白白
2.硬着头皮开始了,pom文件是最最困惑我的,依赖-库-build
src
-main
–java java源代码文件
–resources 资源库,会自动复制到classes目录里
–filters 资源过滤文件
–webapp web应用的目录。WEB-INF、css、js等
–test
–java 单元测试java源代码文件
–resources 测试需要用的资源库
–filters 测试资源过滤库
–assembly 组件的描述配置(如何打包)
–it 集成测试(主要用于插件)
–site Site(一些文档)
target
pom.xml maven的pom文件
LICENSE.txt Project’s license
README.txt Project’s readme
3.按照geotools官网增加了依赖和库,但是依赖一直加载不下来,整了一下午无果
4.回家路上搜了搜,maven项目还需要安装maven,天爷我只安装了idea万事大吉了,心里嘀咕应该是这个原因
5.第二天,按照流程安装了maven,配置了环境变量;maven安装流程,很详细注意settiing文件设置本地仓库地址斜杠\,我看着上面注释示例还把斜杠反过来,试了一次不正确
6. idea需要配置maven地址,本地仓库,setting文件(收藏配置是)
此处遇到一个奇怪的事情,local reposotory 和 setting地址设置完成后,我重新invalidate cache又变回了用户名下面的.m2的地址了,但是也能用,很奇怪,不太懂
7.但是网络库还是下载不下来,怀疑geotools不支持国内网络,所以需要找国内的地址
遇到了geotools依赖问题的博客,按照这个把官网给的依赖改成了这个依赖,然后在setting文件(D:\Program Files\Apache\maven\conf\settings.xml)中设置了mirro标签为阿里镜像,尝试了多次下载后,geotools包完全下载了下来,解决了我的问题(但此处我的idea-setting-maven中local reposotory设置的是默认的.m2中的setting,我去目录下查看并没有这个文件,所以此处有疑问)但总归是解决了
<repositories>
<repository>
<id>osgeo</id>
<name>OSGeo Release Repository</name>
<url>https://repo.osgeo.org/repository/release/</url>
<snapshots>
<enabled>false</enabled>
</snapshots>
<releases>
<enabled>true</enabled>
</releases>
</repository>
<repository>
<id>osgeo-snapshot</id>
<name>OSGeo Snapshot Repository</name>
<url>https://repo.osgeo.org/repository/snapshot/</url>
<snapshots>
<enabled>true</enabled>
</snapshots>
<releases>
<enabled>false</enabled>
</releases>
</repository>
<!-- <repository>-->
<!-- <id>maven2-repository.dev.java.net</id>-->
<!-- <name>Java.net repository</name>-->
<!-- <url>http://download.java.net/maven/2</url>-->
<!-- </repository>-->
<!-- <repository>-->
<!-- <id>osgeo</id>-->
<!-- <name>Open Source Geospatial Foundation Repository</name>-->
<!-- <url>http://download.osgeo.org/webdav/geotools/</url>-->
<!-- </repository>-->
<!-- <repository>-->
<!-- <snapshots>-->
<!-- <enabled>false</enabled>-->
<!-- </snapshots>-->
<!-- <id>boundless</id>-->
<!-- <name>Boundless Maven Repository</name>-->
<!-- <url>http://repo.boundlessgeo.com/main</url>-->
<!-- </repository>-->
</repositories>
<mirror>
<id>nexus-aliyun</id>
<mirrorOf>central</mirrorOf>
<name>Nexus aliyun</name>
<url>http://maven.aliyun.com/nexus/content/groups/public</url>
</mirror>
8. 喜出望外,高兴过早,install后还是有问题
-source 1.5 中不支持 diamond 运算符
1) 设置中查看jdk设置版本
检查project structure中的 project: 1. project sdk: 1.8 2.project language level : 8-lambdas
检查project structure中的 modules: language level:8
检查setting:java compiler : project bytecode version: 8
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.1</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
</plugins>
</build>
9. 最后运行起来了,太不容易了
操作技巧:项目根目录右击-- maven -- reimport 导入包
项目idea右侧菜单栏,maven - 项目名-- lifecycle -- clean(清除缓存)
项目idea右侧菜单栏,maven - 项目名-- lifecycle -- install(安装)
3. 注意pom文件至关重要