Category Archives: Java

JRuby 1.7.2: kolejne spotkanie

Tym razem miałem potrzebę użycia Gephi Toolkit z poziomu JRubiego.

Co rzuciło mi się w oczy podczas zamiany kodu Javy na JRubiego.

1. Refleksja.
.class zwróci nam klasę typu Class
.java_class zwróci nam klasę Java::JavaClass

2. Enum types
Java: EdgeDefault.DIRECTED
JRuby: EdgeDefault::DIRECTED

3. getResource
Metoda getResource z java.lang.Class w JRubym jest dostępna jako java.getResource.

Do działania poniższego kawałka kodu potrzebny jest Gephi Toolkit.

require 'gephi-toolkit.jar'

java_import 'java.io.ByteArrayOutputStream'
java_import 'java.io.File'
java_import 'java.io.IOException'
java_import 'java.io.StringWriter'
java_import 'org.gephi.graph.api.GraphModel'
java_import 'org.gephi.io.exporter.api.ExportController'
java_import 'org.gephi.io.exporter.preview.PDFExporter'
java_import 'org.gephi.io.exporter.spi.CharacterExporter'
java_import 'org.gephi.io.exporter.spi.Exporter'
java_import 'org.gephi.io.exporter.spi.GraphExporter'
java_import 'org.gephi.io.importer.api.Container'
java_import 'org.gephi.io.importer.api.EdgeDefault'
java_import 'org.gephi.io.importer.api.ImportController'
java_import 'org.gephi.io.processor.plugin.DefaultProcessor'
java_import 'org.gephi.project.api.ProjectController'
java_import 'org.gephi.project.api.Workspace'
java_import 'org.openide.util.Lookup'

# Init a project - and therefore a workspace
pc = Lookup.getDefault.lookup(ProjectController.java_class)
pc.newProject
workspace = pc.getCurrentWorkspace

# Get controllers and models
importController = Lookup.getDefault.lookup(ImportController.java_class)

# Import file
file = File.new("file.gml")
container = importController.importFile(file)
container.getLoader.setEdgeDefault(EdgeDefault::DIRECTED)
container.setAllowAutoNode(false)

# Append imported data to GraphAPI
importController.process(container, DefaultProcessor.new, workspace)

# Graph
gm = workspace.getLookup.lookup(GraphModel.java_class)
graph = gm.getGraph

Źródła:
Gephi
Gephi Toolkit Demos
Gephi Toolkit JavaDoc

Reklamy

Ubuntu 12.04, Netbeans 7.0.1: Problem z GUI Builder

Podczas pracy z Netbeans 7.0.1 na Ubuntu 12.04 postanowiłem skorzystać z GUI Buildera do zaprojektowania prostego interfejsu dla aplikacji.
Stworzyłem nowy JFrame Form i przeszedłem do karty Design.
Jedyne, co na początku widziałem to napis Loading…
W końcu zauważyłem ikonę minusa, po kliknięciu, której przeszedłem do komunikatu z wyjątkiem:
java.lang.ClassNotFoundException: org.w3c.dom.ElementTraversal

Rozwiązanie znalazłem na bugs.launchpad.net.
Do pliku /usr/bin/netbeans na końcu wśród opcji dla eval launchNbexec dodałem:
--cp:a /usr/share/java/xercesImpl.jar.

To rozwiązało mój problem.

Zmiana Look and Feel dla Netbeans 7.0.1 na Ubuntu 12.04

W pliku /etc/netbeans.conf do netbeans_default_options= dodajemy np. opcję:
--laf javax.swing.plaf.metal.MetalLookAndFeel

Więcej informacji na temat dostępnych L&F: http://wiki.netbeans.org/NBLookAndFeels