今天,當我嘗試安裝我的 maven 專案時,由于 JDT 依賴項而出現錯誤,這是報告資訊:
Cannot resolve No versions available for org.osgi.service:org.osgi.service.prefs:jar:[1.1.0,1.2.0) within specified range.
[ERROR] Failed to execute goal on project redundantcheck:
Could not resolve dependencies for project edu.fudan.selab:redundantcheck:jar:1.0-SNAPSHOT:
Failed to collect dependencies at org.eclipse.jdt:org.eclipse.jdt.core:jar:3.20.0 ->
org.eclipse.platform:org.eclipse.core.resources:jar:3.12.0 ->
org.eclipse.platform:org.eclipse.core.expressions:jar:3.5.100 ->
org.eclipse.platform:org.eclipse.core.runtime:jar:3.12.0 ->
org.eclipse.platform:org.eclipse.equinox.preferences:jar:3.10.0 ->
org.osgi.service:org.osgi.service.prefs:jar:[1.1.0,1.2.0): No versions available for
org.osgi.service:org.osgi.service.prefs:jar:[1.1.0,1.2.0) within specified range -> [Help 1]
我嘗試將1.1.0 org.osgi.service:org.osgi.service.prefs 添加到專案中,但仍然無法解決這個問題。為了避免依賴更新,我幾乎指定了每個版本的依賴,但今天仍然遇到這個錯誤。這是我的 pom.xml:
<dependencies>
<dependency>
<groupId>org.eclipse.jdt</groupId>
<artifactId>org.eclipse.jdt.core</artifactId>
<version>3.20.0</version>
</dependency>
<dependency>
<groupId>org.eclipse.platform</groupId>
<artifactId>org.eclipse.core.commands</artifactId>
<version>3.9.800</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.eclipse.platform/org.eclipse.core.contenttype -->
<dependency>
<groupId>org.eclipse.platform</groupId>
<artifactId>org.eclipse.core.contenttype</artifactId>
<version>3.7.900</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.eclipse.platform/org.eclipse.core.filesystem -->
<dependency>
<groupId>org.eclipse.platform</groupId>
<artifactId>org.eclipse.core.filesystem</artifactId>
<version>1.7.700</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.eclipse.platform/org.eclipse.core.jobs -->
<dependency>
<groupId>org.eclipse.platform</groupId>
<artifactId>org.eclipse.core.jobs</artifactId>
<version>3.10.1100</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.eclipse.platform/org.eclipse.core.resources -->
<dependency>
<groupId>org.eclipse.platform</groupId>
<artifactId>org.eclipse.core.resources</artifactId>
<version>3.14.0</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.eclipse.platform/org.eclipse.core.runtime -->
<dependency>
<groupId>org.eclipse.platform</groupId>
<artifactId>org.eclipse.core.runtime</artifactId>
<version>3.20.100</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.eclipse.platform/org.eclipse.equinox.common -->
<dependency>
<groupId>org.eclipse.platform</groupId>
<artifactId>org.eclipse.equinox.common</artifactId>
<version>3.14.100</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.eclipse.platform/org.eclipse.osgi -->
<dependency>
<groupId>org.eclipse.platform</groupId>
<artifactId>org.eclipse.osgi</artifactId>
<version>3.16.200</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.eclipse.platform/org.eclipse.text -->
<dependency>
<groupId>org.eclipse.platform</groupId>
<artifactId>org.eclipse.text</artifactId>
<version>3.11.0</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.6.1</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.75</version>
</dependency>
<dependency>
<groupId>org.eclipse.platform</groupId>
<artifactId>org.eclipse.core.expressions</artifactId>
<version>3.8.0</version>
</dependency>
<dependency>
<groupId>org.eclipse.platform</groupId>
<artifactId>org.eclipse.equinox.app</artifactId>
<version>1.6.0</version>
</dependency>
<dependency>
<groupId>org.eclipse.platform</groupId>
<artifactId>org.eclipse.equinox.preferences</artifactId>
<version>3.9.0</version>
</dependency>
<dependency>
<groupId>org.eclipse.platform</groupId>
<artifactId>org.eclipse.equinox.registry</artifactId>
<version>3.11.0</version>
</dependency>
</dependencies>
有沒有辦法解決這個問題?
uj5u.com熱心網友回復:
您正在嘗試使用以下 JDT 版本:
<dependency>
<groupId>org.eclipse.jdt</groupId>
<artifactId>org.eclipse.jdt.core</artifactId>
<version>3.20.0</version>
</dependency>
這對應于 Eclipse 版本2019-12(也稱為4.14內部版本)。
您的問題是 eclipse 專案(org.eclipse.jdt.core以及所有依賴項)正在使用版本范圍。如果您查看org.eclipse.jdt.core依賴項宣告:
org.eclipse.platform:org.eclipse.core.resources:[3.12.0,4.0.0)org.eclipse.platform:org.eclipse.core.runtime:[3.13.0,4.0.0)org.eclipse.platform:org.eclipse.core.filesystem:[1.7.0,2.0.0)org.eclipse.platform:org.eclipse.text:[3.6.0,4.0.0)
如果你什么都不做,Maven 總是采用最新的:
今天(2022 年 6 月)這將是:
org.eclipse.core.resources:3.16.100org.eclipse.core.runtime:3.24.100org.eclipse.core.filesystem:1.9.300org.eclipse.text:3.12.0
該庫發布時(2019 年 12 月)是:
org.eclipse.core.resources:3.13.600org.eclipse.core.runtime:3.17.0org.eclipse.core.filesystem:1.7.600org.eclipse.text:3.10.0
當然,這是遞回的,您需要對所有依賴項執行此操作。
讓 Maven 始終選擇最新的是有問題的:
- 它會阻止您創建可重現的構建,因為 maven 選擇的依賴項取決于當天 maven Central 上可用的內容。
- 你需要解決沖突。
- 您可能是第一個嘗試組合的人。
這就是為什么我總是使用一組一起發布的專案。順便說一句,這也是 Eclipse 專案本身的作業方式(通過使用 P2 更新站點和目標平臺)。
我正在發布 Maven BOM 檔案以修復版本:ECentral 專案
您可以這樣做:
<repositories>
<repository>
<id>ecentral</id>
<url>https://raw.githubusercontent.com/jmini/ecentral/HEAD/repo</url>
</repository>
</repositories>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>fr.jmini.ecentral</groupId>
<artifactId>eclipse-platform-dependencies</artifactId>
<version>4.14</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>
<dependency>
<groupId>org.eclipse.jdt</groupId>
<artifactId>org.eclipse.jdt.core</artifactId>
<!-- no version needed here, because it is defined in the BOM -->
</dependency>
</dependencies>
uj5u.com熱心網友回復:
因為我今天也遇到了這個問題,但是通過插件子依賴,我的臨時解決方案是下載常規org.osgi:org.osgi.service.prefs:jar:1.1.2并將其安裝在本地存盤庫中org.osgi.service:org.osgi.service.prefs:jar:1.1.2。
uj5u.com熱心網友回復:
您可以像這樣排除依賴項:
<dependency>
<groupId>org.eclipse.jdt</groupId>
<artifactId>org.eclipse.jdt.core</artifactId>
<version>3.24.0</version>
<exclusions>
<exclusion>
<groupId>org.osgi.service</groupId>
<artifactId>org.osgi.service.prefs</artifactId>
</exclusion>
</exclusions>
uj5u.com熱心網友回復:
所以這個失敗的原因是依賴
<groupId>org.osgi.service</groupId> <artifactId>org.osgi.service.prefs</artifactId>
但是 org.osgi.service 組不存在,而只是 org.osgi 所以依賴項應該看起來
<groupId>org.osgi</groupId>
<artifactId>org.osgi.service.prefs</artifactId>
uj5u.com熱心網友回復:
我今天在我們的 SpringBoot 專案 1.5.25 中遇到了同樣的問題 org.hibernate:hibernate-tools:jar:5.0.6.Final
錯誤資訊如下:
# Failed to collect dependencies at org.hibernate:hibernate-tools:jar:5.0.6.Final ->
# org.eclipse.jdt:org.eclipse.jdt.core:jar:3.12.2 ->
# org.eclipse.platform:org.eclipse.core.resources:jar:3.11.1 ->
# org.eclipse.platform:org.eclipse.core.expressions:jar:3.5.100 ->
# org.eclipse.platform:org.eclipse.core.runtime:jar:3.12.0 ->
# org.eclipse.platform:org.eclipse.equinox.preferences:jar:3.10.0 ->
# org.osgi.service:org.osgi.service.prefs:jar:[1.1.0,1.2.0): No versions available for org.osgi.service:org.osgi.service.prefs:jar:[1.1.0,1.2.0) within specified range -> [Help 1]
我使用私有關系來解決這個問題,我添加了一個指向https://raw.githubusercontent.com/jmini/ecentral/HEAD/repo的代理 maven2 (maven-ecentral) 存盤庫,謝謝@Jmini
然后在 pom.xml 中添加以下 lignes
<dependencyManagement>
<dependencies>
<dependency>
<groupId>fr.jmini.ecentral</groupId>
<artifactId>eclipse-platform-dependencies</artifactId>
<version>4.14</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<repositories>
<repository>
<id>ecentral</id>
<url>https://nexus.xxxx.xxx/repository/maven-ecentral/</url>
</repository>
</repositories>
使用 IDEA 重新加載您的專案,它應該可以作業。
另一種解決方案是使用排除項
...
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-tools</artifactId>
<version>${hibernate-tools.version}</version>
<exclusions>
<exclusion>
<groupId>org.eclipse.platform</groupId>
<artifactId>org.eclipse.equinox.preferences</artifactId>
</exclusion>
</exclusions>
</dependency>
...
<dependency>
<groupId>org.eclipse.platform</groupId>
<artifactId>org.eclipse.equinox.preferences</artifactId>
<version>3.10.1</version>
</dependency>
uj5u.com熱心網友回復:
即使我從今天開始就一直面臨這個問題,直到昨天它都運行良好。最后我發現org.eclipse.equinox.preferences:3.10.0 group id的pom被提到為org.osgi.service,但工件位于org/osgi的repo1.maven.org,沒有服務檔案夾在里面。我在 org.eclipse.equinox.preferences 的 pom 中將依賴組 id 更改為 org.osgi,然后它就起作用了。
--EDIT-- 我可以看到在 repo 中添加了一個新版本的 3.10.1,它的組 id 更正為 org.osgi 而不是 org.osgi.service
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/491453.html
