Я столкнулся с этим вопросом, пытаясь установить плагин Cucumber-Eclipse в Eclipse через сайт обновлений. Я получил ту же ошибку SunCertPathBuilderException:
Unable to read repository at http://cucumber.io/cucumber-eclipse/update-site/content.xml.
Unable to read repository at http://cucumber.io/cucumber-eclipse/update-site/content.xml.
sun.security.validator.ValidatorException: PKIX path building failed:
sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
Хотя некоторые из других ответов являются подходящими и полезными для данной ситуации, они тем не менее бесполезны и вводят в заблуждение для моей проблемы.
В моем случае проблема заключалась в том, что URL-адрес, предоставленный для сайта обновлений:
https://cucumber.io/cucumber-eclipse/update -site
Однако при навигации по нему через браузер он перенаправляется (обратите внимание на добавленный «.github»):
http://cucumber.github.io/cucumber-eclipse/update-site/
Таким образом, разрешение состоит в том, чтобы просто использовать перенаправленную версию URL сайта обновления при добавлении сайта обновления в eclipse.
Ваш фабричный метод должен быть статическим и находиться в публичном классе.
Следующие работы для меня:
[assembly: XmlnsDefinition("http://schemas.Demo", "MyNameSpace")]
namespace MyNameSpace
{
public interface IMyInterface
{
string MyProperty { get; set; }
}
internal class MyClass : IMyInterface
{
public string MyProperty { get; set; }
}
public static class MyClassFactory
{
public static IMyInterface Create()
{
return new MyClass();
}
}
public class TestClass
{
public static void Test()
{
var myInterface = XamlServices.Parse(@"<IMyInterface xmlns:x=""http://schemas.microsoft.com/winfx/2006/xaml"" xmlns=""http://schemas.Demo""
x:FactoryMethod=""MyClassFactory.Create""
MyProperty=""MyValue""/>") as IMyInterface;
Debug.Assert(myInterface != null);
}
}
}