El repositrio de maven para desarrollar plugins con maven ha cambiado, eso significa que algunas dependencias para versiones muy viejas de tus plugins ya no existen. El nuevo repositorio a usar por mientras es el de Jaroslav Tulach, esperemos que en algún momento todas las dependencias estén en maven central. Debido a ello podemos obtener errores como este:
Failed to execute goal on project DebuggerUtils: Could not resolve dependencies for project de.markiewb.netbeans.plugins:DebuggerUtils:nbm:1.0.0: Failed to collect dependencies at org.netbeans.api:org-netbeans-api-annotations-common:jar:RELEASE81: Failed to read artifact descriptor for org.netbeans.api:org-netbeans-api-annotations-common:jar:RELEASE81: Could not transfer artifact org.netbeans.api:org-netbeans-api-annotations-common:pom:RELEASE81 from/to Maven Central (https://repo1.maven.org/maven2/): Transfer failed for https://repo1.maven.org/maven2/org/netbeans/api/org-netbeans-api-annotations-common/RELEASE81/org-netbeans-api-annotations-common-RELEASE81.pom: Unknown host repo1.maven.org -> [Help 1] Y la solución para poder otra vez desarrollar Plugins de NetBeans será agregar el siguiente repositorio
<repositories>
<repository>
<id>netbeans</id>
<name>NetBeans</name>
<url>https://netbeans.apidesign.org/maven2/</url>
</repository>
</repositories> Aprendí que a partir de Apache NetBeans 11 algunas clases se han vuelto solo para uso interno, por ejemplo en mi caso:
private classes referenced in module: [org.netbeans.modules.editor.lib2.highlighting.HighlightingManager] En este caso significa para el desarrollo Plugin de NetBeans en que la clase que se encargaba de la administración del resaltado con color del texto seleccionado en el editor de NetBeans ya no se puede usar fuera y por lo tanto se debe reescribir la solución usando el API de lexer y trabajando tóken por tóken.
El empezar a trabajar con los tokens provistos por el API de lexer me encontré con un mensaje de alerta que decía:
missing read-lock when accessing tokenhierarchy esto significa que si el texto se modifica por ejemplo con un borrado antes de que acabemos de leerlo en el editor (en el caso de NetBeans se usa un JEditor de Swing), este se podría corromper y los resultados que esperamos también.
Para solventar este problema solo puse la sentencia entre dos sentencias para poner y quitar un candado respectivamente, en caso de que la instancia fuera un tipo de documento que soporte el bloqueo de lectura de la siguiente manera
if (document instanceof AbstractDocument) {
((AbstractDocument) document).readLock();
}
final TokenHierarchy<Document> documentHierarchy = TokenHierarchy.get(document);
final TokenSequence<?> ts = documentHierarchy.tokenSequence();
if (document instanceof AbstractDocument) {
((AbstractDocument) document).readUnlock();
} En mi caso me topé con el error:
[INFO] Private classes referenced in transitive module: [com.sun.activation.registries.MimeTypeFile, com.sun.activation.registries.LogSupport, com.sun.activation.registries.MailcapFile]
[ERROR] Project depends on packages not accessible at runtime in transitive module org.netbeans.api:org-netbeans-modules-xml-jaxb-api:jar:RELEASE111 which will not be accessible at runtime. Esto no se soluciona agregando explícitamente la dependencia transitiva, en este caso particular hay que añadir el jar de activation, en mi caso con maven se hace así:
<dependency>
<groupId>javax.activation</groupId>
<artifactId>activation</artifactId>
<version>1.1.1</version>
</dependency> Espero estas pequeñas cosas te sirvan para el momento en que desarrolles tu propio plugin para NetBeans. En este artículo periodicamente agregaré nuevos hallazgos para facilitar tu incursión para tu Desarrollo de Plugin de NetBeans.
Te comparto aquí mis recomendaciones de cursos de Código Facilito. Codigofacilito.com es una plataforma virtual…
Te comparto aquí mis recomendaciones de cursos de Linkedin Learning. LinkedIn Learning es una plataforma…
Estos snippets de código para entrevista acerca de mockito espero te sean de mucha utilidad.…
En este tutorial aprenderá a usar expresiones regulares en Java de manera práctica para contar…
¿Entrevista de programación Java fullstack? No te preocupes, te tengo un compendio de preguntas de…
Te recomiendo algunos cursos de Udemy para mejorar tus softskills y así mejorar en tu…