【问题标题】:List of available software sites lost after Eclipse updateEclipse 更新后丢失的可用软件站点列表
【发布时间】:2014-06-16 05:51:14
【问题描述】:

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

有可能得到它原来的样子吗?

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

我在 Windows 7 中使用 Eclipse 4.3.2。

【问题讨论】:

  • Window > Preferences > Install/Update > Available software sites 中显示的内容为空白或检查软件更新站点是否在此处禁用。还可以在 Work With 文本框中转到 Help > Install New Software 选择 --All Available Sites 并检查
  • 这两个列表都是空的。我正在再次下载 Eclipse 以创建全新安装:(
  • 尝试在干净的工作空间上打开 Eclipse。查看此帖子stackoverflow.com/questions/2030064/…
  • 从 4.3 更新到 4.4 时遇到同样的问题。有什么解决了吗?
  • Mars 4.5 到 4.5.1 的相同问题...

标签: eclipse


【解决方案1】:

在一组自动更新后,我在 Win7-64 位上遇到了同样的问题。 “可用软件站点”的所有设置都丢失了。数据丢失后我的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”。

【讨论】:

    【解决方案2】:

    对于那些有兴趣恢复更新站点的人,这里有一种方法可以完成这项工作,它可能适合您,也可能不适合您:

    • 找到${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 命令以删除这些部分:-e 's@/(R-[^/]+|)20[0-9]{10}@@g'

    这样更好:

    $ 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/
    

    现在我们将其转换为要导入的 XML 文件:在可用软件站点中,您可以导出一个包含此条目的 bookmarks.xml 文件:

    <?xml version="1.0" encoding="UTF-8"?>
    <bookmarks>
       <site url="http://download.eclipse.org/eclipse/updates/4.7" selected="true" name=""/>
    </bookmarks>
    

    由于您可能不关心nameselected(Eclipse 也可能使用更新站点元数据更新这些),您可以再次使用内置或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:只需添加&lt;?xml version="1.0" encoding="UTF-8"?&gt; &lt;bookmarks&gt;&lt;/bookmarks&gt;,然后将其导入可用的软件套件

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

    您可能想要:

    • 删除所有无效条目或至少禁用它们
    • 将您的bookmarks.xml 保存到存储库或“某处”。
    • 再次导出bookmarks.xml,现在使用正确的名称。

    祝你好运!

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

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        【解决方案4】:

        在霓虹灯中固定

        好消息是可用的更新站点在 Neon 上的 Eclipse 更新中仍然存在。但我仍然在火星和更老的地方看到这个问题。

        针对火星和旧版本的修复

        有一个简单的更改为我在 Mars- 上解决了这个问题,它将“-Djava.net.preferIPv4Stack=true”JVM 参数添加到 Eclipse.ini 文件 before 运行更新:

        -Djava.net.preferIPv4Stack=true
        

        请注意这是一个虚拟机参数,所以它必须在“-vmargs”之后

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

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

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

        【讨论】:

        • 没有真正固定在氖气和氧气中。昨天从霓虹灯到氧气的更新发生在我身上。另见 eclipse bugzilla bugs.eclipse.org/bugs/show_bug.cgi?id=502524
        • 还是有问题。今天发生了
        • 今天发生在我身上。我以为是我的更新站点导致了这个问题。好像不是这样的
        【解决方案5】:

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

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

        • 在“Window”->“Preferences”->“Install/Update”->“Available Software Sites”->“Add...”处手动添加repo URL

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

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

        【讨论】:

          【解决方案6】:

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

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

          它是如何工作的:

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

            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下载

          【讨论】:

            【解决方案7】:

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

            【讨论】:

            • 这里的管理员权限没有区别。这与 eclipse 更新本身有关。
            猜你喜欢
            • 2018-08-31
            • 1970-01-01
            • 1970-01-01
            • 2018-07-06
            • 2013-08-22
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多