Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Maven 来自itext的jasper报告中的依赖项错误_Maven_Jar_Jasper Reports_Dependencies_Itext - Fatal编程技术网

Maven 来自itext的jasper报告中的依赖项错误

Maven 来自itext的jasper报告中的依赖项错误,maven,jar,jasper-reports,dependencies,itext,Maven,Jar,Jasper Reports,Dependencies,Itext,从昨天开始,由于iText jar,我在使用maven编译时遇到了问题。 我的项目依赖于jasperreports-2.0.1,它依赖于itext-1.02b或更高版本 <dependency> <groupId>com.lowagie</groupId> <artifactId>itext</artifactId> <version>[1.02b,)</version> <

从昨天开始,由于iText jar,我在使用maven编译时遇到了问题。 我的项目依赖于jasperreports-2.0.1,它依赖于itext-1.02b或更高版本

<dependency>
    <groupId>com.lowagie</groupId>
    <artifactId>itext</artifactId>
    <version>[1.02b,)</version>
    <scope>compile</scope>
</dependency>
我看到Amedee Van Gasse的一条评论,说了一些关于没有jar的4.2.2版本的事情

为什么1.02b版本附加到4.2.2

编辑: Jasper reports使用开放版本范围:

[1.02b,]

该范围要求maven获取库的最新版本

from iText添加了没有jar的新版本Pom,并将maven central的maven元数据编辑为没有jar版本会导致编译崩溃,这取决于最新的com.lowagie库

从…m2\repository\com\lowagie\itext本地更新maven-metadata-central.xml(以及其他元数据,如果您的公司拥有自己的nexus.public) 暂时解决,直到iText更新元数据,或者所有依赖其最新版本的公司都会更新其pom

<metadata modelVersion="1.1.0">
  <groupId>com.lowagie</groupId>
  <artifactId>itext</artifactId>
  <versioning>
    <latest>4.2.1</latest>
    <release>4.2.1</release>
    <versions>
      <version>0.99</version>
      <version>1.1.4</version>
      <version>1.02b</version>
      <version>1.2.3</version>
      <version>1.3</version>
      <version>1.3.1</version>
      <version>1.4</version>
      <version>1.4.8</version>
      <version>2.0.1</version>
      <version>2.0.6</version>
      <version>2.0.7</version>
      <version>2.0.8</version>
      <version>2.1.0</version>
      <version>2.1.2</version>
      <version>2.1.3</version>
      <version>2.1.4</version>
      <version>2.1.5</version>
      <version>2.1.7</version>
      <version>4.2.0</version>
      <version>4.2.1</version>
    </versions>
    <lastUpdated>20150709153501</lastUpdated>
  </versioning>
</metadata>

com.lowagie
文字
4.2.1
4.2.1
0.99
1.1.4
1.02b
1.2.3
1.3
1.3.1
1.4
1.4.8
2.0.1
2.0.6
2.0.7
2.0.8
2.1.0
2.1.2
2.1.3
2.1.4
2.1.5
2.1.7
4.2.0
4.2.1
20150709153501

我们也遇到了同样的问题。为了解决这个问题,我们删除了Maven配置的代理参数,并更改了Maven metadata central的最新版本(位于存储库的com\lowagie\itext文件夹中)


一个糟糕的解决方案,但暂时有效:/

问题确实存在于jasper的POM报告中:

<dependency>
  <groupId>com.lowagie</groupId>
  <artifactId>itext</artifactId>
  <version>[1.02b,)</version>
  <scope>compile</scope>
</dependency>
或者只是:

<dependency>
  <groupId>com.lowagie</groupId>
  <artifactId>itext</artifactId>
  <version>2.1.7</version>
  <scope>compile</scope>
</dependency>

com.lowagie
该页面充满了关于始终为依赖项使用最新版本的警告。这会降低构建的可复制性

2.1.7
是iText Group NV公司(或其合法前身)发布的iText的最后一个版本,带有
com.lowagie
groupId。iText Group NV公司发布的下一个版本是
5.0.0
,带有
com.itextpdf
groupId,这意味着它与您当前的代码二进制不兼容。还有一个问题是对AGPL进行许可证更改,但这超出了StackOverflow的范围,我想把我的回答限制在技术问题上

任何介于
2.1.7
5.0.0
之间的iText的其他版本,如
4.2.0
4.2.1
,都是其他公司的分支。根据Apache关于将工件上载到中央存储库的指南(),这些公司应该使用不同的groupId,正如页面在其常见问题中明确指出的那样:

我在foo.com上开发了一个补丁版本的foo项目,什么 我应该使用groupId吗?当您修补/修改第三方项目时, 该修补版本将成为您的项目,因此应 在您控制的groupId下分发,就像您拥有的任何项目一样 已开发,从不在com.foo下使用。请参见上述关于 groupId

博士
如果您不想更改代码,请告诉您的Maven只获取iText 2.1.7。

我在使用Maven 2.2.1时也遇到同样的问题,我使用Maven 3.2.3及其作品重新构建了我的项目


您必须使用Maven 3来解决问题,此版本中的错误似乎已得到解决。

一个更简单的解决方案可能是升级到较新版本的
jasperreports
。版本
6.1.0
依赖于iText:

<dependency>
    <groupId>com.lowagie</groupId>
    <artifactId>itext</artifactId>
    <version>2.1.7.js2</version>
    <scope>compile</scope>
</dependency>

com.lowagie

对于完整的
pom.xml

我们决定维护相同的jasperreport版本,并在冲突的pom中进行了以下更改:

<dependencies>
    <dependency>
            <groupId>jasperreports</groupId>
            <artifactId>jasperreports</artifactId>
            <version>2.0.1</version>
            <exclusions>
                <exclusion>
                    <groupId>com.lowagie</groupId>
                    <artifactId>itext</artifactId>
                </exclusion>
            </exclusions>           
    </dependency>
    <dependency>
        <groupId>com.lowagie</groupId>
        <artifactId>itext</artifactId>
        <version>2.1.7</version>
    </dependency>
...
</dependencies>

jasperreports
jasperreports
2.0.1
com.lowagie
文字
com.lowagie
文字
2.1.7
...

编辑:将dependecy更改为2.1.7,以确保它将在将来编译

Jasperrorts使用一些错误修复修补了iText。因此,您必须在pom/gradle文件中添加修补的iText repo[1]

[1]

下面是gradle片段,供您在使用jasper report 6.1.1时参考。

存储库{
mavenLocal()
mavenCentral()
maven{url“http://repo.spring.io/release" }
maven{url“http://jaspersoft.artifactoryonline.com/jaspersoft/third-party-ce-artifacts/" }
maven{url“http://jasperreports.sourceforge.net/maven2/" }
}

我正在使用gradle,对于当前版本
6.8.2
我得到了以下生成错误:
>找不到com.lowagie:itext:2.1.7.js6

所以我添加了
http://jaspersoft.jfrog.io/jaspersoft/third-party-ce-artifacts/
作为存储库,现在可以使用了

repositories {
    mavenCentral()
    maven { url "http://jaspersoft.jfrog.io/jaspersoft/third-party-ce-artifacts/" }
}

dependencies {
    compile 'net.sf.jasperreports:jasperreports:6.8.0'
}

2k19中搜索者的答案

人工制品:

<groupId>com.lowagie</groupId>
<artifactId>itext</artifactId>
com.lowagie
文字
现在已弃用

最好从jasperreports中排除它,并手动添加新的itext依赖项

<dependency>
    <groupId>jasperreports</groupId>
    <artifactId>jasperreports</artifactId>
    <version>6.10.0</version> <!--(or higher)-->
    <exclusions>
        <exclusion>
            <groupId>com.lowagie</groupId>
            <artifactId>itext</artifactId>
        </exclusion>
    </exclusions>
</dependency>
<dependency>
    <groupId>com.itextpdf</groupId>
    <artifactId>itextpdf</artifactId>
    <version>5.5.13</version> <!--(or higher)-->
</dependency>

jasperreports
jasperreports
6.10.0 
com.lowagie
文字
com.itextpdf
itextpdf
5.5.13 

我对一些遗留代码进行了维护,我遇到了同样的问题。我找到的解决方案是将以下内容添加到pom.xml

<repositories>
  <repository>
    <id>jasper-3rd-party</id>
    <name>Jasper3rdParty</name>
    <url>http://jaspersoft.jfrog.io/jaspersoft/third-party-ce-artifacts/</url>
  </repository>
</repositories>

<dependencies>

  <dependency>
    <groupId>net.sf.jasperreports</groupId>
    <artifactId>jasperreports</artifactId>
    <version>6.12.2</version>
  </dependency>

  <!-- More dependencies like: commons-collections4, org.apache.xmlgraphics, etc -->

  <dependency>
    <groupId>com.lowagie</groupId>
    <artifactId>itext</artifactId>
    <version>2.1.7.js4</version>
  </dependency>

</dependencies>

贾斯珀第三方
贾斯珀第三党
http://jaspersoft.jfrog.io/jaspersoft/third-party-ce-artifacts/
net.sf.jasperreports
jasperreports
6.12.2
com.lowagie
文字
2.1.7.js4
用于测试此代码的JasperReports版本于2020年3月发布。希望这有帮助!

对我来说,“修复”是从JasperReports版本5.5.0切换到4.5.1 LOL。(这不依赖于itext)

然后它就不依赖于自定义的、看似未发布的依赖项版本的itext(在我的例子中是2.1.7.js2)

<dependency>
    <groupId>jasperreports</groupId>
    <artifactId>jasperreports</artifactId>
    <version>6.10.0</version> <!--(or higher)-->
    <exclusions>
        <exclusion>
            <groupId>com.lowagie</groupId>
            <artifactId>itext</artifactId>
        </exclusion>
    </exclusions>
</dependency>
<dependency>
    <groupId>com.itextpdf</groupId>
    <artifactId>itextpdf</artifactId>
    <version>5.5.13</version> <!--(or higher)-->
</dependency>
<repositories>
  <repository>
    <id>jasper-3rd-party</id>
    <name>Jasper3rdParty</name>
    <url>http://jaspersoft.jfrog.io/jaspersoft/third-party-ce-artifacts/</url>
  </repository>
</repositories>

<dependencies>

  <dependency>
    <groupId>net.sf.jasperreports</groupId>
    <artifactId>jasperreports</artifactId>
    <version>6.12.2</version>
  </dependency>

  <!-- More dependencies like: commons-collections4, org.apache.xmlgraphics, etc -->

  <dependency>
    <groupId>com.lowagie</groupId>
    <artifactId>itext</artifactId>
    <version>2.1.7.js4</version>
  </dependency>

</dependencies>