Eclipse更新后丢失的可用软件站点列表

时间:2014-04-30 03:23:21

标签: eclipse

单击“检查更新”,安装一些更新并单击“确定”以重新启动Eclipse后,“安装”窗口中的可用软件站点列表将消失。

是否有可能实现它?

如果没有,我该如何重建它以便将来更新我的插件?

我正在使用Windows 7中的Eclipse 4.3.2。

7 个答案:

答案 0 :(得分:11)

在一组自动更新后,我在Win7-64bit上遇到了同样的问题。 “可用软件站点”的所有设置都已丢失。数据丢失后我的eclipse版本是luna 4.4.2。 (现在不要使用版本号,我已经安装了eclipse-cpp-luna-SR1a-win32-x86_64_2014.zip)。

我设置此站点以获取“/ Help / Install new software ....”对话框再次工作:

Eclipse-Project-Repository - http://download.eclipse.org/eclipse/updates/4.4

要获取另一个eclipse版本的存储库,请查看here。 按照eclipse版本的链接,在那里搜索“Eclipse p2 Repository”。

答案 1 :(得分:3)

对于那些有兴趣恢复更新网站的人,这里有一种方法可以帮助您完成这项工作:

  • 找到${ECLIPSE_HOME}\p2\org.eclipse.equinox.p2.engine\profileRegistry\<profile>\.data\.settings\org.eclipse.equinox.p2.artifact.repository.prefs文件。 <profile>取决于已安装的Eclipse,对我来说它是epp.package.rcp.profile
  • 查找以/uri=结尾的所有密钥:它们将包含原始URI。您可以使用grep:grep --color -Po '/uri=.+' org.eclipse.equinox.p2.artifact.repository.prefs(您可能希望过滤file:/ URI)。
  • 移除/uri并取消隐藏属性以重新获得有效的URI:sed对此有利。例如:sed -E -e 's@^/uri=@@g' -e 's@\\@@g'
  • 申请sort --unique

现在,您将拥有此命令行和结果:

$ grep --color -Po '/uri=http.+' org.eclipse.equinox.p2.artifact.repository.prefs | sed -E -e 's@^/uri=@@g' -e 's@\\@@g' | sort
https://spotbugs.github.io/eclipse/
http://download.eclipse.org/e4/snapshots/org.eclipse.e4.tools/latest/
http://download.eclipse.org/eclipse/updates/4.7
http://download.eclipse.org/eclipse/updates/4.7/R-4.7-201706120950
http://download.eclipse.org/eclipse/updates/4.7/R-4.7.1-201709061700
http://download.eclipse.org/eclipse/updates/4.7/R-4.7.1a-201710090410
http://download.eclipse.org/eclipse/updates/4.7/R-4.7.2-201711300510
http://download.eclipse.org/eclipse/updates/4.7/R-4.7.3-201803010715
http://download.eclipse.org/eclipse/updates/4.7/R-4.7.3a-201803300640

你快到了!

如果查看上面的示例,您可以看到同一端点(/eclipse/updates/4.7)的多个重复URI,这是一个P2复合存储库:您可以将其添加到sed命令中以删除这些部分:{{ 1}}。

那更好:

-e 's@/(R-[^/]+|)20[0-9]{10}@@g'

现在我们将其转换为要导入的XML文件:在可用软件站点中,您可以导出一个包含此文件的$ grep --color -Po '/uri=http.+' org.eclipse.equinox.p2.artifact.repository.prefs | sed -E -e 's@^/uri=@@g' -e 's@\\@@g' -e 's@/(R-[^/]+|)20[0-9]{10}@@g' | sort --unique http://download.eclipse.org/e4/snapshots/org.eclipse.e4.tools/latest/ http://download.eclipse.org/eclipse/updates/4.7 http://download.eclipse.org/efxclipse/updates-released/3.0.0/site http://download.eclipse.org/releases/oxygen http://download.eclipse.org/technology/epp/packages/oxygen/ http://eclipse.pitest.org/release/ http://netceteragroup.github.io/quickrex/updatesite http://repo1.maven.org/maven2/.m2e/connectors/m2eclipse-tycho/0.8.0/N/0.8.0.201409231215/ http://ucdetector.sourceforge.net/update/ 文件:

bookmarks.xml

由于您可能不关心<?xml version="1.0" encoding="UTF-8"?> <bookmarks> <site url="http://download.eclipse.org/eclipse/updates/4.7" selected="true" name=""/> </bookmarks> name(Eclipse也可能使用更新站点元数据更新这些内容),您可以再次使用builtin或selected:< / p>

sed

您现在需要$ grep --color -Po '/uri=http.+' org.eclipse.equinox.p2.artifact.repository.prefs.old | \ sed -E -e 's@^/uri=@@g' -e 's@\\@@g' -e 's@/(R-[^/]+|)20[0-9]{10}@@g' | \ sort --unique | \ while read url; do echo "<site url=\"${url}\" />"; done > bookmarks.xml 进行修改:只需添加bookmarks.xml<?xml version="1.0" encoding="UTF-8"?> <bookmarks>,然后将其导入可用软件套件

剩下的就是启用所有网站,方法是选择它们并点击启用。完成后,尝试像往常一样更新Eclipse,这应该可以完成工作!

您可能想要:

  • 删除所有无效条目或至少禁用它们
  • 将您的</bookmarks>保存到存储库或“某个地方”。
  • 再次导出bookmarks.xml,现在使用正确的名称。
祝你好运!

然后......提出这个错误报告:https://bugs.eclipse.org/bugs/show_bug.cgi?id=502524

答案 2 :(得分:2)

在一组自动更新后,我在Win10-64bit上遇到了同样的问题。 “可用软件站点”的所有设置都已丢失。 Eclipse p2存储库
要将Eclipse安装更新为此开发流,可以使用以下位置的软件存储库   http://download.eclipse.org/eclipse/updates/4.5。 要更新构建以使用此特定构建,可以使用软件存储库   http://download.eclipse.org/eclipse/updates/4.5/R-4.5.2-201602121500

答案 3 :(得分:1)

已在霓虹灯中修复

好消息是,可用的更新站点在Neon上的Eclipse更新中幸免于难。但是我仍然在火星上和老年人身上看到这个问题。

修复火星和旧版本

在Mars上有一个简单的变化可以解决这个问题 - 它添加了&#34; -Djava.net.preferIPv4Stack = true&#34;在运行更新之前到Eclipse.ini 文件的JVM参数:

-Djava.net.preferIPv4Stack=true

请注意这是一个VM参数,所以它必须在&#34; -vmargs&#34;

之后

为什么在更新时删除了可用的软件网站?

Eclipse更新由ProvisioningJob完成,它调用LoadMetadataRepositoryJob.runModal(),后者又调用MetadataRepositoryManager.loadRepository()。

AbstractRepositoryManager.loadRepository()通过调用checkNotFound()检查存储库是否有效。如果未发现未添加回购。 preferIPv4 = true修复它。

答案 4 :(得分:0)

我在Eclipse 4.16(2020-06)中遇到了这个问题。

受@NoDataFound方法的启发,我编写了一个Perl脚本作为多合一解决方案。

工作原理:

  • 在'/p2/org.eclipse.equinox.p2.engine/profileRegistry//.data/.settings/org.eclipse.equinox.p2.artifact.repository.prefs'的每一行中检查'昵称' http存储库的“,” uri或“启用”。
    将捕获的属性名称和值存储在与回购标识符关联的哈希中。

    my $propNameCapture = qr/(nickname(?==.*)|(?:uri|enabled)(?==.+))/;
    my ($repo, $propName) = m{^repositories/(http.+?)/$propNameCapture};
    next if !$repo || !$propName;
    
    my ($propValue) = m{^repositories/http.+?/$propName=(.*)};
    
    # Remove the backslash after http[s] if we have an uri.
    $propValue =~ s/\\// if $propName eq 'uri';
    
    # $repo is used merely to collect props belonging together.
    $SiteFromRepo{$repo}->{$propName} = $propValue;
    
  • 创建网站属性数组

    for my $site (values %SiteFromRepo)
    {
        # There are many entries without a nickname.
        # These are not from "Available Software Sites", so skip them.
        next unless exists $site->{nickname};
    
        print("nickname:\t$site->{nickname}\nuri:\t\t$site->{uri}\nenabled:\t$site->{enabled}\n\n");
    
        push(@Sites, $site);
    }
    
  • 编写XML文件

    open($fh, '>:utf8', $OutFilePath) or die("Could not open file '$OutFilePath' for write, exiting.\n");
    
    $fh->print("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<bookmarks>\n");
    $fh->print("   <site url=\"$_->{uri}\" selected=\"$_->{enabled}\" name=\"$_->{nickname}\"/>\n") for @Sites;
    $fh->print('</bookmarks>');
    
    close($fh);
    

可以从my GitHub repo

下载完整的脚本

答案 5 :(得分:0)

从 4.19 (2021-03) 更新到 4.20 (2021-06) 时遇到了同样的问题。对我有用的是:

  • 在列表丢失后重新打开“帮助”->“安装新软件”,这刷新了一些丢失的存储库。

  • 在“窗口”->“首选项”->“安装/更新”->“可用软件站点”->“添加...”中手动添加存储库 URL

我想更新到最后一个版本(当时)所以我添加了以下 URL。将该 URL 替换为您要安装的版本或当前版本的 URL:

URL for 2021-06 repo

  • “帮助” -> 再次“检查更新”,应该可以了。

答案 6 :(得分:-2)

尝试以管理员身份运行Eclipse。这样“检查更新”应该有效。