简体   繁体   English

Pegdown自定义ParserPlugin绑定失败

[英]Pegdown Custom ParserPlugin binding failed

I'm stuck facing problems with pegdown v1.4.2 while trying to implement custom ParserPlugin to a library I'm writing (Maven project, JDK 8): 在尝试将自定义ParserPlugin实现到我正在编写的库(Maven项目,JDK 8)时,我遇到了与pegdown v1.4.2有关的问题:

CustomPlugin: CustomPlugin:

public class CustomHeadersParserPlugin extends Parser implements BlockPluginParser {

public CustomHeadersParserPlugin() {super(HtmlMdProc.MDP_SETTINGS, HtmlMdProc.PROCESSING_TIME_LIMIT, DefaultParseRunnerProvider);
}

public CustomHeadersParserPlugin(Integer options, Long maxParsingTimeInMillis) {
  super(options, maxParsingTimeInMillis, DefaultParseRunnerProvider);
}

public CustomHeadersParserPlugin(Integer options, Long maxParsingTimeInMillis, ParseRunnerProvider parseRunnerProvider) {
  super(options, maxParsingTimeInMillis, parseRunnerProvider);
}

public CustomHeadersParserPlugin(Integer options, Long maxParsingTimeInMillis, ParseRunnerProvider parseRunnerProvider, PegDownPlugins plugins) {
  super(options, maxParsingTimeInMillis, parseRunnerProvider, plugins);
}

//************* CUSTOM RULES ***************
...

Pegdown Usage: 挂钉用法:

public class HtmlMdProc {

public static final int MDP_SETTINGS = Extensions.HARDWRAPS | Extensions.AUTOLINKS | Extensions.TABLES | Extensions.FENCED_CODE_BLOCKS;
public static final long PROCESSING_TIME_LIMIT = 5000l;
...
public HtmlMdProc markdown() {
  PegDownPlugins pdp = PegDownPlugins.builder().withPlugin(CustomHeadersParserPlugin.class).build();
  PegDownProcessor mdp = new PegDownProcessor(MDP_SETTINGS, PROCESSING_TIME_LIMIT, pdp);
  RootNode rn = mdp.parseMarkdown(text.toCharArray());
  String result = new CustomMarkdownToHtmlSerializer().toHtml(rn);
    if (result != null)
      this.text = result;
    else
      logger.debug("Could not process markdown in {} seconds", PROCESSING_TIME_LIMIT / 1000);
  return this;
}

Test: 测试:

@Test
public void testmarkdownWithoutCode() {
  String before = "Simple new line\nTest\n\nTest\nVot";
  String expected = "<p>Simple new line<br />Test</p><p>Test<br />Vot</p>".replaceAll("\r", "");
  HtmlMdProc textProc = new HtmlMdProc(before);
  String result = textProc.markdown().text();
  assertEquals(expected, result);
}

Testing Exeption: 测试产品:

java.lang.RuntimeException: Error creating extended parser class: null
  at org.objectweb.asm.ClassReader.<init>(Unknown Source)
  at org.objectweb.asm.ClassReader.<init>(Unknown Source)
  at org.objectweb.asm.ClassReader.<init>(Unknown Source)
  at org.parboiled.transform.AsmUtils.createClassReader(AsmUtils.java:56)
  at org.parboiled.transform.ClassNodeInitializer.process(ClassNodeInitializer.java:62)
  at org.parboiled.transform.ParserTransformer.extendParserClass(ParserTransformer.java:44)
  at org.parboiled.transform.ParserTransformer.transformParser(ParserTransformer.java:38)
  at org.parboiled.Parboiled.createParser(Parboiled.java:54)
  at org.pegdown.plugins.PegDownPlugins$Builder.withPlugin(PegDownPlugins.java:113)
  at com.myorg.html.services.HtmlMdProc.markdown(HtmlMdProc.java:317)
  at com.myorg.html.services.HtmlMdProcTest.testmarkdownWithoutCode(HtmlMdProcTest.java:262)
  1. Can I somehow bind my CustomHeadersParserPlugin avoiding spooky Reflections? 我可以以某种方式绑定CustomHeadersParserPlugin以避免发生怪异的反射吗?
  2. If not, tell me how to setup maven-bundle-plugin in pom.xml to make it work with pegdown v 1.4.2. 如果不是,请告诉我如何在pom.xml中设置maven-bundle-plugin以使其与pegdown v 1.4.2一起使用。

I found Issue with discussion Here , but I'm too novice to deal alone with Maven plugins and Reflections. 我在这里找到了讨论的问题,但是我还是一个新手,无法单独处理Maven插件和Reflections。

唯一的解决方案是等待此问题结束,直到我发现Pegdown和Java 8都没有运气为止。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM