使用dubbo2.7.5版本时，我同样也出现了这个问题：
```
java.lang.NullPointerException: null
	at org.apache.dubbo.registry.integration.RegistryProtocol.register(RegistryProtocol.java:178) ~[dubbo-2.7.5.jar:2.7.5]
	at org.apache.dubbo.registry.integration.RegistryProtocol.export(RegistryProtocol.java:209) ~[dubbo-2.7.5.jar:2.7.5]
	at org.apache.dubbo.rpc.protocol.ProtocolListenerWrapper.export(ProtocolListenerWrapper.java:60) ~[dubbo-2.7.5.jar:2.7.5]
	at org.apache.dubbo.rpc.protocol.ProtocolFilterWrapper.export(ProtocolFilterWrapper.java:143) ~[dubbo-2.7.5.jar:2.7.5]
	at org.apache.dubbo.qos.protocol.QosProtocolWrapper.export(QosProtocolWrapper.java:64) ~[dubbo-2.7.5.jar:2.7.5]
	at org.apache.dubbo.rpc.Protocol$Adaptive.export(Protocol$Adaptive.java) ~[dubbo-2.7.5.jar:2.7.5]
	at org.apache.dubbo.config.ServiceConfig.doExportUrlsFor1Protocol(ServiceConfig.java:470) ~[dubbo-2.7.5.jar:2.7.5]
	at org.apache.dubbo.config.ServiceConfig.doExportUrls(ServiceConfig.java:315) ~[dubbo-2.7.5.jar:2.7.5]
	at org.apache.dubbo.config.ServiceConfig.doExport(ServiceConfig.java:287) ~[dubbo-2.7.5.jar:2.7.5]
	at org.apache.dubbo.config.ServiceConfig.export(ServiceConfig.java:205) ~[dubbo-2.7.5.jar:2.7.5]
```
阅读了源码，发现是因为在ServiceRepository类中providers写入提供者信息时没有获取到版本号，写入的Key值也是不带版本号，但是ApplicationModel.getProviderModel(registeredProviderUrl.getServiceKey());获取ProviderModel时，registeredProviderUrl.getServiceKey()是带有版本号值，导致无法从ServiceRepository类中的providers中获取数据而报错。
dubbo以前支持dubbo.provider.version=xxx的方式配置默认版本号，这样就可以不用在xml配置文件或者使用注解时手动指定服务版本。2.7.5版本更新进行改造后该功能缺失引发上述错误，只需要在xml配置文件或使用@Service注解时指定服务版本号version即可。不过还是希望保留该特性以更好的向下兼容。
private final ExecutorService executorService = newSingleThreadExecutor();
    private final EventDispatcher eventDispatcher = EventDispatcher.getDefaultExtension();
    private final ExecutorRepository executorRepository = ExtensionLoader.getExtensionLoader(ExecutorRepository.class).getDefaultExtension();
    private final ConfigManager configManager;
    private final Environment environment;
    private ReferenceConfigCache cache;
    private volatile boolean exportAsync;
    private volatile boolean referAsync;
    private AtomicBoolean initialized = new AtomicBoolean(false);
    private AtomicBoolean started = new AtomicBoolean(false);
    private AtomicBoolean destroyed = new AtomicBoolean(false);
    private volatile ServiceInstance serviceInstance;
    private volatile MetadataService metadataService;
    private volatile MetadataServiceExporter metadataServiceExporter;
    private List<ServiceConfigBase<?>> exportedServices = new ArrayList<>();
    private List<Future<?>> asyncExportingFutures = new ArrayList<>();
    private List<CompletableFuture<Object>> asyncReferringFutures = new ArrayList<>();
    /**
     * See {@link ApplicationModel} and {@link ExtensionLoader} for why DubboBootstrap is designed to be singleton.
     */
    public static synchronized DubboBootstrap getInstance() {
        if (instance == null) {
            instance = new DubboBootstrap();
        }
        return instance;
    }
    private DubboBootstrap() {
        configManager = ApplicationModel.getConfigManager();
        environment = ApplicationModel.getEnvironment();
        DubboShutdownHook.getDubboShutdownHook().register();