【问题标题】:How to get java code to compile in a directory [duplicate]如何让java代码在目录中编译[重复]
【发布时间】:2017-02-07 04:00:56
【问题描述】:

我在终端中有这个。当我从主目录调用它时,没有问题,它工作得很好。但是当我把它放到一个子目录 CPS3498 并编译它时没有错误。当我尝试使用java home/student/pshivam/CPS3498/encrypt 运行程序时,它给了我这个错误

Exception in thread "main" java.lang.NoClassDefFoundError: /home/student/pshivam/CPS3498/encrypt
Caused by: java.lang.ClassNotFoundException: .home.student.pshivam.CPS3498.encrypt
    at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
Could not find the main class: /home/student/pshivam/CPS3498/encrypt.  Program will exit

代码如下。

import java.lang.ClassNotFoundException;
    import java.io.BufferedReader;
    import java.io.BufferedWriter;
    import java.io.File;
    import java.io.FileReader;
    import java.io.FileWriter;
    import java.io.IOException;

    public class encrypt {

        public static void main(String[] args) throws IOException {
            try {
                File file = new File("/home/student/pshivam/CPS3498/letter.txt");
                FileReader fileReader = new FileReader(file);
                BufferedReader bufferedReader = new BufferedReader(fileReader);
                StringBuffer stringBuffer = new StringBuffer();
                String line;
                while ((line = bufferedReader.readLine()) != null) {
                    stringBuffer.append(line);
                    stringBuffer.append("\n");
                }
                fileReader.close();
                for(int i = 0; i<stringBuffer.length(); i++){
                    int encrypt = 0;
                    encrypt = (int)stringBuffer.charAt(i);
                    encrypt = encrypt * 9;
                    stringBuffer.setCharAt(i, (char)encrypt);
                    File message = new File("/home/student/pshivam/CPS3498/secret.txt");
                    try
                    {
                        message.createNewFile();
                        FileWriter msgFile = new FileWriter(message);
                        BufferedWriter msgBuff = new BufferedWriter(msgFile);
                        msgBuff.write(stringBuffer.toString());
                        msgBuff.close();
                    } 
                    finally 
                    {

                    }
                }

            } finally{

            }


        }
    }

【问题讨论】:

  • 这个源文件有包吗?
  • @TimBiegeleisen 我没有包裹
  • 我有另一个与此类似但只是解密的代码

标签: java subdirectory


【解决方案1】:

如果您没有为 encrypt 类指定包,那么您应该能够使用 java encrypt.class 文件所在的目录中的 any 目录运行它位于。

如果您指定了以下包:

package home.student.pshivam.CPS3498

那么您将从home 上方的root 目录构建(如果您使用的是Linux,则可能是\)。然后,您将使用

从根目录再次运行程序
java home.student.pshivam.CPS3498.encrypt

顺便说一下,Java 中的命名约定是类名应该以大写字母开头,即使用Encrypt 而不是encrypt

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-06-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-13
    • 1970-01-01
    相关资源
    最近更新 更多