InvocationTargetException: сбой вызова Dapp при использовании Aion Embedded AVM - PullRequest
0 голосов
/ 22 марта 2019

Когда я звоню по контракту с помощью maven и встроенного AVM, я получаю следующее сообщение:

[ERROR] Failed to execute goal org.aion4j:aion4j-maven-plugin:0.5.0-beta1:call (default-cli) on project supercontract: Method call failed: InvocationTargetException: Dapp call failed. Code: FAILED, Reason: null -> [Help 1]

Я только что отредактировал HelloAvM контракт, который вы получаете при mvn initialize проекте. Вот весь контракт:

public class HelloAvm {
    // Voting App
    // 1. Users call a function to find out what the question is.
    // 2. They then call another function with their choice.
    // 3. Any use can call the results() function to find out what the current votes are.

    public static int questionNumber = 1;
    public static String questionString = "Is Haggis a real animal?";

    public String getQuestion() {
        return "Question #" + questionNumber + ": " + questionString;
    }

    public void testContract() {
        // This function just returns a string to show that the contract is working.
        BlockchainRuntime.println("This contract is working.");
    }

    public static byte[] main() {
        return ABIDecoder.decodeAndRunWithClass(HelloAvm.class, BlockchainRuntime.getData());
    }
}

Я не уверен, почему это происходит сбой, и сообщение об ошибке не очень полезно. Я рассмотрел другие ошибки InvocationTargetException в StackOverflow, но, похоже, они не помогают решить эту проблему.

1 Ответ

1 голос
/ 26 марта 2019

Разобрался сам.Очевидно, вам нужно сделать каждую функцию static для Java-контрактов.Так что getQuestion и testContract выше должны выглядеть так:

public static String getQuestion() {
        return "Question #" + questionNumber + ": " + questionString;
    }

    public static void testContract() {
        // This function just returns a string to show that the contract is working.
        BlockchainRuntime.println("This contract is working.");
    }
...