我对这一切都是陌生的,实际上我只是对编码有基本的了解。
我实际上正在尝试使用在ChemMedChem中发布的Java代码(支持信息中为dx.doi.org/10.1002/cmdc.200900317)
我拥有他们使用的所有适当程序/ jar文件(来自ChemAxon)
我能够复制代码并将其编译到类文件中而没有任何问题:
javac -classpath C:\jarfolder\MarvinBeans-plugin.jar;C:\jarfolder\MarvinBeans.jar; MQN.java
虽然我得到:
Note: MQN.java uses or overrides a deprecated API.
Note: Recompile with -Xlint:deprecation for details.
然后,当它尝试运行类文件时(将输入文件作为虚拟化学输入作为微笑代码):
java -classpath C:\jarfolder\MarvinBeans-plugin.jar;C:\jarfolder\MarvinBeans.jar; MQN test.smiles
我得到:
Error: Main method not found in class MQN, please define the main method as:
public static void main(String[] args)
我试图将代码包含在
public static void main(String[] args){}
但是我然后得到错误:
>MQN.java:10: error: illegal start of expression
public String calculateMQN(Molecule m) {
^
>MQN.java:10: error: ';' expected
public String calculateMQN(Molecule m) {
^
>MQN.java:10: error: ';' expected
public String calculateMQN(Molecule m) {
^
>MQN.java:255: error: reached end of file while parsing
}
^
4 errors
在下面,您将找到我使用的代码(在添加公共静态void main(String [] args)之前),任何帮助将不胜感激
谢谢!
Java代码:
import chemaxon.calculations.TopologyAnalyser;
import chemaxon.marvin.calculations.HBDAPlugin;
import chemaxon.struc.MolAtom;
import chemaxon.struc.MolBond;
import chemaxon.struc.Molecule;
public class MQN {
TopologyAnalyser ta = new TopologyAnalyser();
HBDAPlugin hbda = new HBDAPlugin();
public String calculateMQN(Molecule m) {
if (!m.dearomatize()) {
System.out.println("DEAROMATIZE ERROR");
}
ta.setMolecule(m);
//Classic descriptors
try {
hbda.setMolecule(m);
hbda.run();
} catch (Exception e) {
System.err.println("HBDA ERROR");
}
int hbd = hbda.getDonorAtomCount();
int hbdm = hbda.getDonorCount();
int hba = hbda.getAcceptorAtomCount();
int hbam = hbda.getAcceptorCount();
/*Reymond style Rot bond count*/
int rbc = ta.rotatableBondCount();
for (int i = 0; i < m.getBondCount(); i++) {
if (m.getBond(i).getType() == 3) {
rbc--;
}
}
if (rbc < 0) {
rbc = 0;
}
//Ring properties / ring sizes count
int r3 = 0, r4 = 0, r5 = 0, r6 = 0, r7 = 0, r8 = 0, r9 = 0, rg10 = 0;
int[][] sssr = m.getSSSR();
for (int i = 0; i < sssr.length; i++) {
switch (sssr[i].length) {
case 3:
r3++;
break;
case 4:
r4++;
break;
case 5:
r5++;
break;
case 6:
r6++;
break;
case 7:
r7++;
break;
case 8:
r8++;
break;
case 9:
r9++;
break;
default:
rg10++;
break;
}
}
//Atom properties
int c = 0, f = 0, cl = 0, br = 0, I = 0, thac = 0, asv = 0, adv = 0, atv = 0, aqv = 0,
cdv = 0, ctv = 0, cqv = 0, p = 0, s = 0, posc = 0, negc = 0,
afrc = 0, cn = 0, an = 0, co = 0, ao = 0;
for (int i = 0; i < m.getAtomCount(); i++) {
MolAtom at = m.getAtom(i);
boolean isRingAt = ta.isRingAtom(i);
if (at.getAtno() != 1) {
thac++;
}
//element counts
switch (at.getAtno()) {
case 1:
case 2:
case 3:
case 4:
case 5:
break;
case 6:
c++;
break;
case 7:
if (isRingAt) {
cn++;
} else {
an++;
}
break;
case 8:
if (isRingAt) {
co++;
} else {
ao++;
}
break;
case 15:
p++;
break;
case 16:
s++;
break;
case 9:
f++;
break;
case 17:
cl++;
break;
case 35:
br++;
break;
case 53:
I++;
break;
}
//valency count
switch (at.getBondCount()) {
case 0:
System.out.println("ATOM WITH NO BONDS");
break;
case 1:
asv++; //single valent can only be acyclic
break;
case 2:
if (isRingAt) {
cdv++;
} else {
adv++;
}
break;
case 3:
if (isRingAt) {
ctv++;
} else {
atv++;
}
break;
case 4:
if (isRingAt) {
cqv++;
} else {
aqv++;
}
break;
}
if (ta.ringCountOfAtom(i) > 1) {
afrc++;
}
}
//Bond properties
int csb = 0, cdb = 0, ctb = 0, asb = 0, adb = 0, atb = 0, bfrc = 0;
for (int i = 0; i < m.getBondCount(); i++) {
MolBond bd = m.getBond(i);
if (ta.isRingBond(i)) {
switch (bd.getType()) {
case 1:
csb++;
break;
case 2:
cdb++;
break;
case 3:
ctb++;
break;
default:
System.out.println("UNKNOWN CYCLIC BOND TYPE " + bd.getType());
break;
}
} else {
switch (bd.getType()) {
case 1:
asb++;
break;
case 2:
adb++;
break;
case 3:
atb++;
break;
default:
System.out.println("UNKNOWN ACYCLIC BOND TYPE " + bd.getType());
break;
}
}
}
//bond's fused ring count
int[][] sssre = m.getSSSRBonds();
int[] brc = new int[m.getBondCount()];
for (int j = 0; j < sssre.length; j++) {
for (int k = 0; k < sssre[j].length; k++) {
brc[sssre[j][k]]++;
}
}
for (int j = 0; j < brc.length; j++) {
if (brc[j] > 1) { //if bond's ring count > 1
bfrc++; //increase fused ring bonds count
}
}
for (int i = 0; i < m.getAtomCount(); i++) {
int crg = m.getAtom(i).getCharge();
if (crg > 0) {
posc += crg;
}
if (crg < 0) {
negc += Math.abs(crg);
}
}
return //CLASSIC PROPERTIES
hbd + ";" //hydrogen bond donor atom count 1
+ hbdm + ";" //HBD with multivalency 2
+ hba + ";" //hydrogen bond acceptor atom count 3
+ hbam + ";" //HBA with multivalency 4
+ rbc + ";" //rotatable bond count 5
//RING PROPERTIES
+ r3 + ";" + r4 + ";" + r5 + ";" + r6 + ";" + r7 + ";" + r8 + ";" + r9 + ";" + rg10 + ";"
//RingSize Counts 6-13
//ATOM PROPERTIES
+ thac + ";"//total heavy atom count (= everything else than H D T) 14
+ c + ";" //carbon count 15
+ p + ";"//phosphorus 16
+ s + ";"//sulfur atom count 17
+ f + ";" //fluor atom count 18
+ cl + ";" //chlorine atom count 19
+ br + ";" //bromine atom count 20
+ I + ";" //iodine atom count 21
+ cn + ";" //cyclic nitrogen count 22
+ an + ";" //acyclic nitrogen count 23
+ co + ";" //cyclic oxygen count 24
+ ao + ";" //acyclic oxygen count 25
+ asv + ";"//acyclic single valent atom count 26
+ adv + ";"//acyclic double valent atom count 27
+ atv + ";"//acyclic triple valent atom count 28
+ aqv + ";"//acyclic quart valent atom count 29
+ cdv + ";"//cyclic double valent atom count 30
+ ctv + ";"//cyclic triple valent atom count 31
+ cqv + ";"//cyclic quart valent atom count 32
+ afrc + ";"//atoms-in-fused-ring count 33
+ posc + ";" // Positive charges 34
+ negc + ";" // Negative charges 35
//BOND PROPERTIES
+ csb + ";"//cyclic single bonds 36
+ cdb + ";"//cyclic double bonds 37
+ ctb + ";"//cyclic triple bonds 38
+ asb + ";"//acyclic singe bonds 39
+ adb + ";"//acyclic double bonds 40
+ atb + ";"//acyclic triple bonds 41
+ bfrc + ";"//bonds-in-fused-ring count 42
+ m.toFormat("smiles:q");//END 43
}
}
像这样添加主要
...............................
...............................
public class MQN {
TopologyAnalyser ta = new TopologyAnalyser();
HBDAPlugin hbda = new HBDAPlugin();
public static void main(String [] args) {
// This is where the execution of the program will begin
}
public String calculateMQN(Molecule m) {
if (!m.dearomatize()) {
System.out.println("DEAROMATIZE ERROR");
.............
..............
如果仍然出现编译器错误,请在此处发表评论
问题内容: 我对这一切都是陌生的,实际上我只是对编码有基本的了解。 我实际上正在尝试使用在ChemMedChem中发布的Java代码(支持信息中为dx.doi.org/10.1002/cmdc.200900317) 我拥有他们使用的所有适当程序/ jar文件(来自ChemAxon) 我能够复制代码并将其编译到类文件中而没有任何问题: 虽然我得到: 然后,当它尝试运行类文件时(将输入文件作为虚拟化学
问题内容: 我基本上是在完善,完成并尝试从Java初学者的参考书中编译测试代码。目的是创建一个猜谜游戏,其中目标位于3个连续的单元格中(我将位置保持在数组中),而用户则猜测该单元格的编号。逐个摧毁目标细胞。 我在这里检查了六则关于同一错误的帖子,但我无法弄清楚出了什么问题。 这是我的错误: 我的代码是: 问题答案: 方法只能声明局部变量。这就是为什么当您尝试将其声明为public时,编译器会报告错
问题内容: 新的Java程序员在尝试运行Java程序时经常会遇到这些消息。 这是什么意思,是什么原因引起的,应该怎么做才能解决? 问题答案: 当你使用java命令从命令行运行Java应用程序时,例如, 该命令将加载你指定的类,然后查找名为的入口点方法。更具体地说,它正在寻找一种声明如下的方法: 入口点方法的特定要求是: 该方法必须在指定的类中。 方法的名称必须为 ,且大小写精确为1。 方法必须是。
我的代码是关于循环和方法的,这是一个让用户计算面积或使用4个基本数学运算的程序。(三角形、正方形、矩形)及其选择的进程:加法、减法、乘法和除法。 我想我正确地关闭了那里的加法函数,我已经检查了关闭每个函数,它们似乎工作得很好,除了加法函数,因为这是我唯一的错误。
问题内容: 我在一个空目录中有一个超简单的文件: 和预期的以下作品 我在Mac OS X上,使用emma-2.0.5312和java 1.7.0_40 emma.jar已安装到/ Library / Java / Extensions,因此可以正常工作 (它显示了使用emmarun的帮助) 接下来我跑 我得到错误: 是什么原因造成的?显然,它确实有一个公共的,可访问的主方法,那么为什么艾玛找不到它
为什么我会得到:非法的表达式开始-公共静态int noOfLetters(String str){error?我如何修复它?