在上篇《可视化工具gephi源码探秘(一)》中主要介绍了如何将gephi的源码导入myeclipse中遇到的一些问题,此篇接着上篇而来,主要讲解当下通过myeclipse导入gephi源码的可行性不高以及熟悉netbeans,并把原本基于netbeans平台开发的gephi源码导入进netbeans后启动正常运行的过程,其中有遇到的不少问题和相应的解决方法。
 
前日工作梗概(还是沿着想把源码导入myeclipse的思路):
  经过从各大子模块的pom.xml中筛选出符合条件的jar包写入项目下的pom.xml文件后,maven dependency中虽然多了几十个jar包,表示确实已经下载下来了。但是项目还是大片的红色警告,主要原因还是没有正确导包。
 
  通过观察发现报警较多的是由于org.openide所在的包没有引入,网上一通找后,在一个专门找jar包的网站上搜索了三个openide的版本jar包,但都遇到部分类不能中的方法还是报错,估计是因为导入的版本不对,但是网上确实找不到相应的jar了,所以这时想起之前通过maven在远程仓库上好像还下载了不少jar,去搜索了下还真有与openide相关的,导入到项目中还真是解决了导包报错的问题,于是针对项目中缺什么就去找什么,最终解决了所有报警的问题,这个问题是解决了,可是还有两大问题一直困扰着我:
  一是根据各路消息得知gephi是在netbeans平台上开发的,而且在导包的过程中也注意到许多jar都烙上了netbeans的痕迹,担忧这样硬性移植到Myeclipse上会出现水土不服,当然表面上看没有报错;
  二是通过在项目中搜索发现,项目中没有main函数,针对这一现象特地在网上搜索是否还有其他的入口标记,都是搜索未果。
 
  下午的时候老大尝试直接把安装文件拷贝到项目中,把安装文件的gephi目录下的jar都换成源码中的各模块的源码,然后再编译,确实能编译过去,并且将部署的目录在.classpath中由bin改为了gephi/modules/目录下了,并将gephi.exe标记拷贝到bin目录下,这样是能够启动程序的,但是是不经过Myeclipse的,还是不能解决当前燃眉之急。
 
 
今日梗概:
  今天一天都在困惑如何让源代码跑起来以及究竟是选择在myeclipse中跑还是在netbeans中跑。
 
  工具版本简介:netbeans:6.9.1(起初下载的是netbeans8,但是需要jdk1.7,我的jdk版本是1.6所以选择netbeans6.9.1)、gephi:0.8.2、maven:2.0.6
  我的足迹大致是这样的:
  1.昨天晚上的时候发现还是应该尝试下netbeans的开发平台,各种权威官方网站只要提及gephi源码导入以及二次开始无一不提到netbeans,所以在选择平台的岔路口,我想都走着看看,不能一条道走到黑却发现前面是死胡同。
  安装完netbeans后,开始捯饬着新建个maven项目,因为gephi源码中是有pom.xml文件的,选择的是maven netbeans模块套件选项:
  但是提示我的maven版本太老(我的是2.0.6)确实是  有点旧了,后来就挪了一步,换成了项目需要的最低门槛2.0.7,点击下一步,开始配置一些参数信息:
  点击完成后会先从maven的远程库中下载一些必要的jar包,因为此前是netbeans小白,所以新建项目后不知道如何拷贝gephi源码,只是讲pom.xml中的内容换成了gephi源码中自带的pom.xml,netbeans中的maven机制好像好myeclipse不太一样,在myeclipse中按下ctrl+s即可保存pom.xml同时也会下载jar包,netbeans就不会,所以我直接点击运行,这下好了,控制台打印出大量信息,都是写下载jar包的,具体信息就不贴了(插一句,怎么感觉怎么觉得netbeans的maven下载jar机制很好很强大,哪像myeclipse非你闹别扭一会中断一会报错),当然中途也报错了,说是对maven版本又有要求,需要3.0.3,。啥也别说了直接下个3.0.4吧,此后在运行估摸着jar包也下载的差不多了。
 
  2.这些都不重要,重要的是gephi的源码还没有导入呢,眼前对他也是没辙,网上关于导入gephi源码到netbeans中的文章也是少之又少,后来时间不早,就回去嚼了嚼霍达的《穆斯林的葬礼》,还算有嚼头。今天一来就上谷歌上找了一通,看了半天也没什么进展,倒是更加确信在myeclipse下导入gephi源码似乎还是有点不合时宜,因为各路大神并没有直接否定说eclipse和myeclipse与导入gephi源码无缘,但是都很巧妙的说到,gephi是基于netbeans开发的,有很多组件一来与netbeans平台也很好用,所以推荐netbeans或者说明自己是用netbeans开发的(事实上,一天下来,真没发现哪个说用eclipse或是myeclipse导入源码成功并能够运行的)。搜索途中,发现有个gephi toolkit,看着拿捏不是很准的英文介绍应该是说是gephi的一个jar可以运行在任何java平台包括myeclipse中,于是下载了一个gephi-toolkit-0.8.7-all的jar,把里面的gephi-toolkit.jar放到在myeclipse中新建项目中,按照wikipedia上的介绍把一些例子挪到了项目中进行测试,其中一个用于生成随机图形的例子的代码如下:
 package org.gephi;

 import org.gephi.io.generator.plugin.DynamicGraph;
import org.gephi.io.generator.plugin.RandomGraph;
import org.gephi.io.importer.api.Container;
import org.gephi.io.importer.api.ContainerFactory;
import org.gephi.io.importer.api.ImportController;
import org.gephi.io.processor.plugin.AppendProcessor;
import org.gephi.io.processor.plugin.DefaultProcessor;
import org.gephi.project.api.ProjectController;
import org.gephi.project.api.Workspace;
import org.openide.util.Lookup; public class GenerateGraph { /**
* @param args
*/
public static void main(String[] args) { //Init a project - and therefore a workspace
ProjectController pc = Lookup.getDefault().lookup(ProjectController.class);
pc.newProject();
Workspace workspace = pc.getCurrentWorkspace(); //Generate a new random graph into a container
Container container = Lookup.getDefault().lookup(ContainerFactory.class).newContainer();
RandomGraph randomGraph = new RandomGraph();
randomGraph.setNumberOfNodes(500);
randomGraph.setWiringProbability(0.005);
randomGraph.generate(container.getLoader()); //Append container to graph structure
ImportController importController = Lookup.getDefault().lookup(ImportController.class);
importController.process(container, new DefaultProcessor(), workspace); //Generate another graph and append it to the current workspace
Container container2 = Lookup.getDefault().lookup(ContainerFactory.class).newContainer();
RandomGraph randomGraph2 = new RandomGraph();
randomGraph2.setNumberOfNodes(100);
randomGraph2.setWiringProbability(0.01);
randomGraph2.generate(container.getLoader());
importController.process(container2, new AppendProcessor(), workspace); //Use AppendProcessor to append to current workspace //Create new workspace
Workspace workspace2 = pc.newWorkspace(pc.getCurrentProject());
pc.openWorkspace(workspace2); //Set as current workspace //Generate dynamic graph into workspace 2
Container container3 = Lookup.getDefault().lookup(ContainerFactory.class).newContainer(); DynamicGraph dynamicGraph = new DynamicGraph();
dynamicGraph.generate(container3.getLoader());
importController.process(container3, new DefaultProcessor(), workspace2); } }

  成功运行后结果如下:

# Nodes loaded: 500
# Edges loaded: 578
# New Nodes appended: 0
# New Edges appended: 0
# Nodes loaded: 50
# Edges loaded: 47
原本还是幻想着能够出来一个和gephi那样的界面,在这块啃了会,觉得没多大希望,而此时netbeans似乎一直在呼唤我。
 
  3.在网上找了找关于netbeans和maven项目的关系,说是netbeans具有自动识别java项目、maven项目的功能,于是乎,点击文件->打开项目后,进入到我下载的源码目录下如图所示,我期望的gephi-0.8.2-beta没有独特的标示,但是之前下载的gephi-plugins-bootcamp-master倒是被识别出来了
  先将该项目导入到netbeans中,点击运行,这时居然弹出gephi启动程序了,当时那种心情,在兴奋和犹豫要不要兴奋之间纠结,兴奋的是起码有一种途径可以通过程序跑出gephi,犹豫是因为这毕竟不是在myeclipse平台上,不是我熟悉的味道啊,这一历史性的突破可能就意味着下面我得好好喝netbeans处一段时间了。此外这也不是我要的通过源码启动程序,所以还是在源码上下功夫,搜索了下wikipedia上关于build gephi的介绍,看到了大体的导入的目录结构,于是再次点击打开项目,进入gephi-0.8.2-beta后豁然看见一个标记"ma"
  可是后面总是显示“maven项目格式不正确”,几经百度、几经谷歌终不能解,于是又是陷入一个低谷。
 
  4.这时又想到gephi这个项目似乎是没有main函数的,也就是说没有正常项目那样的入口,所以于如何启动从哪启动的问题也是一个心结,一顿搜索后发现问题总是很多,解决的相对较少,我不是第一个有这样疑惑的人,但也不是第一个知道这个问题答案的幸运儿,最终给我的感觉还是说netbeans可以指定一个启动入口或者说netbeans对于桌面应用程序具有特殊的处理使得不需要想一般程序一样通过main函数的讨论(当然,可能是偷偷用的,被封装起来而已)。之后来回往返于几个权威性的网页,看看大家的问题,结合自身的问题,灵机一动,咱换别的版本源码来瞧瞧,于是乎一口气下载了0.8.1-beta、0.8.0-alpha、0.8.0-beta、0.7.-alpha3和0.7-alpha4版本,逐一尝试,最终还是发现0.8.1是可以为我所用的,用过源码启动的阶段性问题算是解决了,启动的部分信息如下:
 
platform.download:
Using harness folder F:\Research\可视化\code\源码\gephi-0.8.1-beta.sources/platform/harness
branding:
files-init:
release:
build:
org.gephi.desktop.mrufiles.api.taskdefs:
org.gephi.desktop.mrufiles.api.common-init:
org.gephi.desktop.mrufiles.api.projectized-common.basic-init:
org.gephi.desktop.mrufiles.api.basic-init:
org.gephi.desktop.mrufiles.api.files-init:
org.gephi.desktop.mrufiles.api.nbm-license-init:
org.gephi.desktop.mrufiles.api.build-init:
Scanning for modules in F:\Research\可视化\code\源码\gephi-0.8.1-beta.sources\platform\platform
Scanning for modules in suite F:\Research\可视化\code\源码\gephi-0.8.1-beta.sources
org.gephi.desktop.mrufiles.api.init:
org.gephi.desktop.mrufiles.api.up-to-date:
org.gephi.desktop.mrufiles.api.compile:
org.gephi.desktop.mrufiles.api.jar-prep:
org.gephi.desktop.mrufiles.api.jar:
org.gephi.desktop.mrufiles.api.netbeans-extra:
org.gephi.desktop.mrufiles.api.javahelp:
org.gephi.desktop.mrufiles.api.module-auto-deps:
org.gephi.desktop.mrufiles.api.release:
org.gephi.desktop.mrufiles.api.module-xml-regular:
org.gephi.desktop.mrufiles.api.module-xml-autoload:
org.gephi.desktop.mrufiles.api.module-xml-eager:
org.gephi.desktop.mrufiles.api.chmod-executables:
org.gephi.desktop.mrufiles.api.verify-class-linkage:
0 file(s) have been successfully validated.
org.gephi.desktop.mrufiles.api.netbeans:
Generating information for Auto Update...
org.gephi.io.database.drivers.taskdefs:
org.gephi.io.database.drivers.common-init:
org.gephi.io.database.drivers.projectized-common.basic-init:
org.gephi.io.database.drivers.basic-init:
org.gephi.io.database.drivers.files-init:
org.gephi.io.database.drivers.nbm-license-init:
org.gephi.io.database.drivers.build-init:
Scanning for modules in F:\Research\可视化\code\源码\gephi-0.8.1-beta.sources\platform\platform
Scanning for modules in suite F:\Research\可视化\code\源码\gephi-0.8.1-beta.sources
org.gephi.io.database.drivers.init:
org.gephi.io.database.drivers.up-to-date:
org.gephi.io.database.drivers.compile:
org.gephi.io.database.drivers.jar-prep:
org.gephi.io.database.drivers.jar:
org.gephi.io.database.drivers.netbeans-extra:
org.gephi.io.database.drivers.javahelp:
org.gephi.io.database.drivers.module-auto-deps:
org.gephi.io.database.drivers.release:
Copying 6 files to F:\Research\可视化\code\源码\gephi-0.8.1-beta.sources\build\cluster
org.gephi.io.database.drivers.module-xml-regular:
……
Generating information for Auto Update...
org.gephi.desktop.timeline.taskdefs:
org.gephi.desktop.timeline.common-init:
org.gephi.desktop.timeline.projectized-common.basic-init:
org.gephi.desktop.timeline.basic-init:
org.gephi.desktop.timeline.files-init:
org.gephi.desktop.timeline.nbm-license-init:
org.gephi.desktop.timeline.build-init:
Scanning for modules in F:\Research\可视化\code\源码\gephi-0.8.1-beta.sources\platform\platform
Scanning for modules in suite F:\Research\可视化\code\源码\gephi-0.8.1-beta.sources
org.gephi.desktop.timeline.init:
org.gephi.desktop.timeline.up-to-date:
org.gephi.desktop.timeline.compile:
org.gephi.desktop.timeline.jar-prep:
org.gephi.desktop.timeline.jar:
org.gephi.desktop.timeline.netbeans-extra:
org.gephi.desktop.timeline.javahelp:
org.gephi.desktop.timeline.module-auto-deps:
org.gephi.desktop.timeline.release:
org.gephi.desktop.timeline.module-xml-regular:
org.gephi.desktop.timeline.module-xml-autoload:
org.gephi.desktop.timeline.module-xml-eager:
org.gephi.desktop.timeline.chmod-executables:
org.gephi.desktop.timeline.verify-class-linkage:
1 file(s) have been successfully validated.
org.gephi.desktop.timeline.netbeans:
Generating information for Auto Update...
org.netbeans.swing.dirchooser.taskdefs:
org.netbeans.swing.dirchooser.common-init:
org.netbeans.swing.dirchooser.projectized-common.basic-init:
org.netbeans.swing.dirchooser.basic-init:
org.netbeans.swing.dirchooser.files-init:
org.netbeans.swing.dirchooser.nbm-license-init:
org.netbeans.swing.dirchooser.build-init:
Scanning for modules in F:\Research\可视化\code\源码\gephi-0.8.1-beta.sources\platform\platform
Scanning for modules in suite F:\Research\可视化\code\源码\gephi-0.8.1-beta.sources
org.netbeans.swing.dirchooser.init:
org.netbeans.swing.dirchooser.up-to-date:
org.netbeans.swing.dirchooser.compile:
org.netbeans.swing.dirchooser.jar-prep:
org.netbeans.swing.dirchooser.jar:
org.netbeans.swing.dirchooser.netbeans-extra:
org.netbeans.swing.dirchooser.javahelp:
org.netbeans.swing.dirchooser.module-auto-deps:
org.netbeans.swing.dirchooser.release:
org.netbeans.swing.dirchooser.module-xml-regular:
org.netbeans.swing.dirchooser.module-xml-autoload:
org.netbeans.swing.dirchooser.module-xml-eager:
org.netbeans.swing.dirchooser.chmod-executables:
org.netbeans.swing.dirchooser.verify-class-linkage:
0 file(s) have been successfully validated.
org.netbeans.swing.dirchooser.netbeans:
Generating information for Auto Update...
run:
run.run:
 
  至此,gephi的源码导入工作已算结束,下一步就是了解netbeans以及gephi。对于gephi有研究的请在下方留言^_^

  如果您觉得阅读本文对您有帮助,请点一下“推荐”按钮,您的“推荐”将是我最大的写作动力!如果您想持续关注我的文章,请扫描二维码,关注JackieZheng的微信公众号,我会将我的文章推送给您,并和您一起分享我日常阅读过的优质文章。

  

友情赞助

如果你觉得博主的文章对你那么一点小帮助,恰巧你又有想打赏博主的小冲动,那么事不宜迟,赶紧扫一扫,小额地赞助下,攒个奶粉钱,也是让博主有动力继续努力,写出更好的文章^^。

    1. 支付宝                          2. 微信

                      

可视化工具gephi源码探秘(二)---导入netbeans的更多相关文章

  1. 可视化工具gephi源码探秘(二)

    在上篇<可视化工具gephi源码探秘(一)>中主要介绍了如何将gephi的源码导入myeclipse中遇到的一些问题,此篇接着上篇而来,主要讲解当下通过myeclipse导入gephi源码 ...

  2. 可视化工具gephi源码探秘(一)

    今天在老大和小梁的鼓舞和忽悠下(^_^),我决定还是把之前下载好的gephi源码好好利用起来,不在朝三暮四的想d3js或是什么vizster,用心去选择一个自己熟悉的,而不是一直在各种困难之间来回徘徊 ...

  3. yum工具及源码包

    目录 yum工具及源码包 yum yum源 yum实战案例 yum全局配置文件 制作本地yum仓库 构建企业级yum仓库 源码包 yum工具及源码包 yum yum是RedHat以及CentOS中的软 ...

  4. linux 软件管理--yum工具及源码包

    目录 linux 软件管理--yum工具及源码包 一.yum基本概述 二.yum源的配置 三.yum实践案例 四.yum全局配置文件 五.yum签名检查机制 五.制作本地yum仓库 六.构建企业级yu ...

  5. Spring1:Spring简介、环境搭建、源码下载及导入MyEclipse

    框架学习前言 这个模块是面向Spring的,Spring的学习我是这么想的: 1.简单介绍Spring,主要是从网上借鉴一些重点 2.尽量说明清楚Spring的使用方法以及细节点 3.尽量以自己的理解 ...

  6. H5类似易企秀/编辑器/页面制作/开发/生成工具/软件/源码/授权

    代码地址如下:http://www.demodashi.com/demo/14960.html 项目简介 H5DS (HTML5 Design software) 这是一款基于WEB的 H5制作工具. ...

  7. git工具 将源码clone到本地指定目录的三种方式

      git工具 将源码clone到本地指定目录的三种方式 CreationTime--2018年7月27日15点34分 Author:Marydon 1.情景展示 运行git-bash.exe,输入命 ...

  8. 一点一点看JDK源码(二)java.util.List

    一点一点看JDK源码(二)java.util.List liuyuhang原创,未经允许进制转载 本文举例使用的是JDK8的API 目录:一点一点看JDK源码(〇) 1.综述 List译为表,一览表, ...

  9. 并发工具CyclicBarrier源码分析及应用

      本文首发于微信公众号[猿灯塔],转载引用请说明出处 今天呢!灯塔君跟大家讲: 并发工具CyclicBarrier源码分析及应用 一.CyclicBarrier简介 1.简介 CyclicBarri ...

随机推荐

  1. Windows下Oracle安装图解----oracle-win-64-11g 详细安装步骤

    一. Oracle 下载 官方下地址 http://www.oracle.com/technetwork/database/enterprise-edition/downloads/index.htm ...

  2. 练习ajax的时候出现这个问题 还没解决

    VM601:1 Uncaught SyntaxError: Unexpected end of JSON input  应该怎么办呢

  3. Silverlight用户自定义控件件中增加属性和方法

    下面的例子在用户控件MyCpmzSelect中增加了一个myCaption属性 public static readonly DependencyProperty myCaptionProperty ...

  4. iOS 直播类APP开发流程分解:

    1 . 音视频处理的一般流程: 数据采集→数据编码→数据传输(流媒体服务器) →解码数据→播放显示1.数据采集:摄像机及拾音器收集视频及音频数据,此时得到的为原始数据涉及技术或协议:摄像机:CCD.C ...

  5. On One Side Kolmogorov Type Inequalities

    Let \(X_1,X_2,\ldots,X_n\) be independent random variables. Denote \[S_n=\sum_{i=1}^n X_i.\] The  we ...

  6. ASP.NET MVC3 Razor 初心者容易遇到的問題(转)

    这是一些相关的文章地址 http://demo.tc/Post/679 http://blog.csdn.net/cheny_com/article/details/6298496

  7. Java Spring AOP用法

    Java Spring AOP用法 Spring AOP Java web 环境搭建 Java web 项目搭建 Java Spring IOC用法 spring提供了两个核心功能,一个是IoC(控制 ...

  8. 岁末年初3Q大战惊现高潮,360震撼推出Android "3Q" IM即时通讯

    岁末年初3Q大战惊现高潮,360震撼推出Android "3Q" IM即时通讯 看过了QQ和360斗争的开端高潮,当然现在还不能说这场斗争已经结束,在我看来这次的事件未尝不是一个适 ...

  9. 解决VS2008 开发Windows Mobile 项目生成速度慢的问题(转)

    最近用VS2008开发Windows Mobile程序,使用C#..NET Compact Framework,发现项目生成速度比较慢.用VS2008打开项目后,开始一段时间生成速度还能忍受,时间一长 ...

  10. 解决IE6下png图片透明度不显示的问题

    世界上最遥远的距离,不外乎我在搞前端,你却在用旧IE,现在随着XP要退休了,IE6的市场占有率应该也会逐步下滑.不过基于天朝人民的惰性以及企鹅微软的“扎篱笆”活动,做网站的朋友依旧不能忽视IE6的存在 ...