java 非法的表达式_java-在类/非法表达式开始中找不到主要方法

娄德运
2023-12-01

我对这一切都是陌生的,实际上我只是对编码有基本的了解.

我实际上正在尝试使用在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

}

}

 类似资料: