0
私は完全な初心者ですが、私はこの質問をする前に多くの投稿を読んでいます。私は(私が作成した)インタフェースで定義された構造、次の新しいプロジェクトをビルドするためのテンプレートを作成したい:私のクラスのメソッド名を使用して、mavenのアーキタイプを作成するためのリフレクションを使用します。
package com.jh.interfaces;
public interface VideoPlayerInterface {
void play();
void pause();
void rewind();
void stop();
void fastFordward();
}
私はそのメソッドをオーバーライドするクラスを作成したいと思い、このような何か:
をpackage com.jh.impl;
public class VideoPlayerCustom implements VideoPlayerInterface {
public void play(){}
public void pause(){}
public void rewind(){}
public void stop(){}
public void fastFordward(){}
}
そうするためには
は、私は、Javaクラスと同様のものを行うためにリフレクションを使用SOのトピックを見つけましたが、私は起動にも、簡単な操作で自分のインタフェースを使用して結果を取得することができませんでした:
public class ${library-name}Client
{
#set($year = $package.getClass().forName("java.util.Date").newInstance().getYear() + 1900)
#set($name = $package.getClass().forName("com.jh.interfaces.VideoPlayerInterface").getSimpleName())
public void ${name}${year}(){}
}
$ {年}(それが正常に動作します)現在の年が含まれますが、Maven原型からプロジェクトを作成するときに$ {name}は失敗します。
generate (default-cli) on project standalone-pom: org.apache.maven.archetype.exception.ArchetypeGenerationFailure: Error merging velocity templates: Invocation of method 'forName' in class java.lang.Class threw exception java.lang.ClassNotFoundException: com.jh.interfaces.VideoPlayerInterface at archetype-resources/src/main/java/__library-name__Client.java[line 10, column 39]
誰でも同様の問題を経験してきましたか? おかげ
こんにちは、お返事に感謝:
次に、あなたはこのようなテンプレートの何かを書くことができます。私は原型の完全な初心者ですが、そのJavaコードはどこに付けるべきですか?これまでは、属性値に応じてファイルを作成できました。 – pablogdt