- [ ] I have searched the [issues](https://github.com/apache/dubbo/issues) of this repository and believe that this is not a duplicate.
- [ ] I have checked the [FAQ](https://github.com/apache/dubbo/blob/master/FAQ.md) of this repository and believe that this is not a duplicate.

### Environment

* Dubbo version: xxx
* Operating System version: centos 7
* Java version: 1.8.0

### Steps to reproduce this issue

Class.forName 使用的MetadataReportService 的classloader 来加载interface,
但是这个interface 可能是另外的class loader 加载的，会报找不到class.
```log
2019-08-01 12:15:26,110 ERROR org.apache.dubbo.metadata.integration.MetadataReportService[106] -  [DUBBO] publishProvider getServiceDescriptor error. providerUrl: dubbo://192.168.0.9:20880/com.wdk.SpiTes?anyhost=true&application=wdk-plugin-engine&dubbo=2.0.2&generic=false&group=dubbo&interface=com.wdk.SpiTes&methods=speak&proxy=jdk&release=2.7.1-SNAPSHOT&revision=1.0.0-SNAPSHOT&side=provider&version=1.0.0.wdk-serverless-bundle.1.0.0, dubbo version: 2.7.1-SNAPSHOT, current host: 192.168.0.9
java.lang.ClassNotFoundException: com.wdk.SpiTes
```

Pls. provide [GitHub address] to reproduce this issue.

### Expected Result



What do you expected from the above steps？

### Actual Result

What actually happens?

If there is an exception, please attach the exception trace:

```
Just put your stack trace here!
```

return metadataReportService;
    }
    public void publishProvider(URL providerUrl) throws RpcException {
        
        
        providerUrl = providerUrl.removeParameters(PID_KEY, TIMESTAMP_KEY, Constants.BIND_IP_KEY, Constants.BIND_PORT_KEY, TIMESTAMP_KEY);
        try {
            String interfaceName = providerUrl.getParameter(INTERFACE_KEY);
            if (StringUtils.isNotEmpty(interfaceName)) {
                Class interfaceClass = Class.forName(interfaceName);
                FullServiceDefinition fullServiceDefinition = ServiceDefinitionBuilder.buildFullDefinition(interfaceClass, providerUrl.getParameters());
                metadataReport.storeProviderMetadata(new MetadataIdentifier(providerUrl.getServiceInterface(),
                        providerUrl.getParameter(VERSION_KEY), providerUrl.getParameter(GROUP_KEY),
                        PROVIDER_SIDE, providerUrl.getParameter(APPLICATION_KEY)), fullServiceDefinition);
                return;
            }
            logger.error("publishProvider interfaceName is empty . providerUrl: " + providerUrl.toFullString());
        } catch (ClassNotFoundException e) {
            
            logger.error("publishProvider getServiceDescriptor error. providerUrl: " + providerUrl.toFullString(), e);
        }
    }
    public void publishConsumer(URL consumerURL) throws RpcException {
        consumerURL = consumerURL.removeParameters(PID_KEY, TIMESTAMP_KEY, Constants.BIND_IP_KEY, Constants.BIND_PORT_KEY, TIMESTAMP_KEY);
        metadataReport.storeConsumerMetadata(new MetadataIdentifier(consumerURL.getServiceInterface(),
                consumerURL.getParameter(VERSION_KEY), consumerURL.getParameter(GROUP_KEY), CONSUMER_SIDE,
                consumerURL.getParameter(APPLICATION_KEY)), consumerURL.getParameters());
    }
}