单击“检查更新”,安装一些更新并单击“确定”以重新启动Eclipse后,“安装”窗口中的可用软件站点列表将消失。
是否有可能实现它?
如果没有,我该如何重建它以便将来更新我的插件?
我正在使用Windows 7中的Eclipse 4.3.2。
答案 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);
答案 5 :(得分:0)
从 4.19 (2021-03) 更新到 4.20 (2021-06) 时遇到了同样的问题。对我有用的是:
在列表丢失后重新打开“帮助”->“安装新软件”,这刷新了一些丢失的存储库。
在“窗口”->“首选项”->“安装/更新”->“可用软件站点”->“添加...”中手动添加存储库 URL
我想更新到最后一个版本(当时)所以我添加了以下 URL。将该 URL 替换为您要安装的版本或当前版本的 URL:
答案 6 :(得分:-2)
尝试以管理员身份运行Eclipse。这样“检查更新”应该有效。