血战Maven,各种问题,Eclipse控制台乱码,Maven打包时Javadoc失败-UTF-8-BOM编码

最近继续Maven打包,一个项目又遇到问题了。

提示Javadoc失败,但是没有 Eclipse控制台乱码了,看不清具体原因。

瞎猜,太费时间了。

 

首要问题是解决乱码。

 

可以参考:转载 Eclipse控制台输出中文乱码问题的解决

可能是因为用的Windows系统,系统编码默认是GBK吧,控制台用UTF-8 有时不太好使,用GBK吧。

 

乱码解决之后,错误如下:

[ERROR] /D:/GitRepos/jtn-common-web/src/main/java/cn/fansunion/report/ppt/CreateTablePPT.java:[34,26] ??ASCII???????

看样子是编码错误,打包用的说UTF-8,提示ASCII 不就是GBK吗。

用记事本打开,发现编码确实是 UTF8。

再用Nodepad打开,编码显示是:UTF-8-BOM,不太清楚怎么产生“BOM”这个问题了,很常见的一个问题。

 

改成UTF-8,再试,不行额。

 

新建同名文件,复制粘贴原来的内容,替换,还是不行。

真难受。

 

wen提示,其它代码含有中文 不会出错呢?

这些报错文件,很特殊吗?

 

只好,暂时回避这个问题。

2个老代码,先排除source code。

 

 

不服输。

 

对比下正常打包的项目:

<properties>
<!-- Plugin的属性 -->
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

 </properties>

增加了1个编码属性,之前遇到过这个问题,枚举类的中文最后乱码。

 

加了之后,依然报错。

忧伤呀。

 

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-javadoc-plugin:2.9.1:jar (default) on project jtn-common-web: MavenReportException: Error while creating archive:

[ERROR] Command line was: D:\Soft\javaSE1.8\jdk1.8\jre\..\bin\javadoc.exe @options @packages
[ERROR]
[ERROR] Refer to the generated Javadoc files in 'D:\GitRepos\jtn-common-web\target\apidocs' dir.

 

根据这个错误提示:在'D:\GitRepos\jtn-common-web\target\apidocs'目录,看到了 maven给加的几个文件,

 

其中有个 javadoc.bat

C:\Users\>cd /d D:\GitRepos\jtn-common-web\target\apidocs

 

D:\GitRepos\jtn-common-web\target\apidocs>javadoc.bat

 

D:\GitRepos\jtn-common-web\target\apidocs>D:\Soft\javaSE1.8\jdk1.8\jre\..\bin\javadoc.exe @options @packages

正在加载程序包main.java.cn.fansunion.report.excel.bigdata的源文件...

正在加载程序包main.java.cn.fansunion.report.excel.bigdata.util的源文件...

正在加载程序包main.java.cn.fansunion.report.excel.demo的源文件...

正在加载程序包main.java.cn.fansunion.report的源文件...

正在加载程序包test.java.cn.fansunion.report的源文件...

正在加载程序包test.java.com.jiutianniao.common.web.demo的源文件...

正在构造 Javadoc 信息...

javadoc: 警告 - 没有程序包main.java.cn.fansunion.report.excel.bigdata的源文件

javadoc: 警告 - 没有程序包main.java.cn.fansunion.report.excel.bigdata.util的源文件

javadoc: 警告 - 没有程序包main.java.cn.fansunion.report.excel.demo的源文件

javadoc: 警告 - 没有程序包main.java.cn.fansunion.report.excel的源文件

javadoc: 警告 - 没有程序包test.java.cn.fansunion.report的源文件

javadoc: 警告 - 没有程序包test.java.com.jiutianniao.common.web.demo的源文件

javadoc: 错误 - 找不到可以文档化的公共或受保护的类。

1 个错误

32 个警告

 

通过这里,就看出问题了。

 

这个项目Maven结构有点怪,通过Maven更新,总是把src 作为 源代码目录。

只能手动添加 src/main/java src/main/resources作为 源代码目录。

这个问题,经常出现,还没有找到根本原因。

 

所以,只好正常解决 maven源代码目录问题,javadoc就可以了。

 

另外,Windows控制台执行javadoc输出 中文 没有乱码。

之前Eclipse控制台编码改为 GBK,下方展示的 也是 ??? 之类,估计依然乱码。

 

初步结论:Eclipse控制台 用UTF8,本身是没问题的。

/D:/GitRepos/jtn-common-web/src/main/java/com/jiutianniao/common/web/extension/spring/ObjectExcelView.java: 某些输入文件使用或覆盖了已过时的 API。

这个错误就正常显示了。

有问题的是Javadoc输出。

“���ڼ��س����main.java.cn.fansunion.report.excel.bigdata��Դ�ļ�...”

 

所以,把Eclipse编码改为 UTF8,尝试给javadoc传递参数。

 

尝试在Maven配置javadoc插件编码:

<!-- Javadoc -->

<plugin>

<groupId>org.apache.maven.plugins</groupId>

<artifactId>maven-javadoc-plugin</artifactId>

<version>2.9.1</version>

<configuration>

<encoding>UTF-8</encoding>

<aggregate>true</aggregate>

<charset>UTF-8</charset>

<docencoding>UTF-8</docencoding>

</configuration>

<executions>

<execution>

<phase>package</phase>

<goals>

<goal>jar</goal>

</goals>

<configuration>

<additionalparam>-Xdoclint:none</additionalparam>

</configuration>

</execution>

</executions>

</plugin>

 

依然不行,崩溃啊。

 

参考网友答案

在使用IDEA生成Java Doc的过程中,可能会出现IDEA控制台输出中文乱码,即使我们在maven-javadoc-plugin插件中指定字符集为UTF-8,依然是乱码,这是因为Maven的默认平台编码是GBK。

解决办法: 
在IDEA中,打开File | Settings | Build, Execution, Deployment | Build Tools | Maven | Runner在VM Options中添加-Dfile.encoding=GBK,切记一定是GBK。

 

设置JVM参数,看起来就有问题。果然还是不行,更乱了。

 

看了下Maven deploy目录下

target/apidocs目录下的options选项

-encoding
'UTF-8'

javadoc参数已经指定了。

 

感觉Maven 打包,控制台下javadoc 正常显示中文,难搞啊。

先弃坑了。

 

先把根本问题解决了:Maven工程的 源码结构。

 

发现有问题的项目,build设置不对啊

<build>

         

        <sourceDirectory>src</sourceDirectory>

        <plugins>

            <plugin>

                <artifactId>maven-compiler-plugin</artifactId>

                <version>3.5.1</version>

                <configuration>

                    <source>1.8</source>

                    <target>1.8</target>

                </configuration>

            </plugin>

        </plugins>

    </build>

竟然写的是 src。

 

Maven默认的是

<build>

    <!--默认源代码目录-->

    <sourceDirectory>src/main/java </sourceDirectory> 

    <!--默认测试源代码目录-->

    <testSourceDirectory>src/test/java</testSourceDirectory> 

    <!--默认资源目录-->

    <resources> 

        <resource> 

            <directory>src/main/resources</directory> 

        </resource> 

    </resources>

    <!--默认测试资源目录-->

    <testResources> 

        <testResource> 

             <directory>src/test/resources</directory> 

        </testResource> 

    </testResources> 

</build>

 

删除 自己的build,update maven,项目结构就正常了。

提示编译错误。

经常遇到的问题,Maven默认用JDK1.5编译级别,自己用的是JDK1.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> 

                </configuration> 

            </plugin> 

        </plugins> 

</build>

 

编译插件和源码。

更新之后,自动默认为JDK1.8,爽歪歪。

 

 

再重新,release发布,javadoc只有警告,不会再中断了。

 

到此,所有问题都搞定了。

 

总结

遇到问题,解决问题。

每一个报错,都是有原因的。

网上查找资料,一个个解决,项目中的 警告 报错 越来越少。

错误越少,项目越是稳定。

 

参考资料

Maven配置多源代码目录、多资源目录

https://blog.csdn.net/qq_36838191/article/details/82964522

Maven配置默认使用的JDK版本

https://www.cnblogs.com/lanqi/p/7868755.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值