首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >自动生成Java包装器的Web3J

自动生成Java包装器的Web3J
EN

Stack Overflow用户
提问于 2019-05-24 10:49:44
回答 1查看 297关注 0票数 0

我尝试使用web3j动态生成包装器,并使用反射在生成的类上调用一个方法。但我在第一次尝试时就得到了classNotFound异常。(当我停止服务器并重新运行时,它可以工作,因为类已经存在)

java是否支持动态生成类(当服务器运行时)?

代码语言:javascript
复制
 private void createContractClass(String contractFileNameWithoutExtension) {
        try {
            String command = "web3j solidity generate -b " +
                    contractLocation+contractFileNameWithoutExtension+".bin  -a "+contractLocation+contractFileNameWithoutExtension+".abi" +
                    " -o "+sourceCodeLocation+" -p generated";
            LOG.info("Executing {}", command);
            Process p = Runtime.getRuntime().exec(command);
            int exitCode = p.waitFor();
            if(exitCode != 0) {
                LOG.error("Error {}", p.getOutputStream());
            }
        } catch(IOException | InterruptedException ex) {
            ex.printStackTrace();
            throw new FormatException(ValidationMessages.FAILED_TO_DEPLOY_CONTRACT);
        }
    }

 private String invokeDeployment(String password, String walletFileName, String contractFileName) {
        try {
            Credentials credentials = WalletUtils.loadCredentials(password, walletLocation + "/" + walletFileName);
            Class classz = Class.forName("generated."+ StringUtils.capitalize(contractFileName));
            Method method = classz.getDeclaredMethod("deploy", Web3j.class, Credentials.class, BigInteger.class, BigInteger.class);

            RemoteCall<?> invoke = (RemoteCall<?>)method.invoke(classz, web3JClient.getClient(), credentials, DefaultGasProvider.GAS_PRICE, DefaultGasProvider.GAS_LIMIT);
            Contract contract = (Contract)invoke.send();
            return contract.getContractAddress();
        } catch (Exception e){
            e.printStackTrace();
            throw new FormatException(ValidationMessages.FAILED_TO_DEPLOY_CONTRACT);
        }
    }
EN

Stack Overflow用户

发布于 2019-05-29 07:20:51

这是因为,类没有加载到类路径中。编译并将类加载到类路径解决了这个问题。

票数 0
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56285235

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档