【问题标题】:Android java.lang.NullPointer. Wrong path Eclipse Juno - JDK7?Android java.lang.NullPointer。错误的路径 Eclipse Juno - JDK7?
【发布时间】:2013-01-20 11:46:13
【问题描述】:

无法在 Eclipse 中运行我的小 Android 代码,我收到以下错误消息:

E/AndroidRuntime(275): java.lang.RuntimeException: 无法启动活动 ComponentInfo{com.mytest.threedee/com.mytest.threedee.MainActivity}: java.lang.NullPointerException

还有哪些信息会有所帮助? 我猜我的代码无关紧要,因为 Eclipse 甚至无法开始执行它。 我确实 import java.lang.math.* 为什么说它是“空指针”?编辑器不会将我的数学函数标记为任何错误。我想这是 Eclipse 的一些模糊路径问题。

Project/properties/Order 和 Export 仅列出: - 2Dto3D/src(2Dto3D 是我的项目名称) - 2Dto3D/gen - 安卓 4.2 - Android 依赖项

那里应该还有更多的东西吗?

在源选项卡下,它显示“本机库位置:(无)”。 听起来很糟糕,不是吗?

我有: 视窗 7、64 位 已下载 java JDK 7、64 位 面向移动开发人员的 Eclipse Juno 版本 1 尝试在虚拟设备 API 8 上运行我的代码

还有我的代码(测试计算的开始): (对不起,这里的导入块不会进入代码格式)

包 com.mytest.threedee;

导入 com.mytest.threedee.R; 导入android.app.Activity; 导入android.os.Bundle; 导入 android.view.Menu; 导入 android.widget.TextView; 导入静态 java.lang.Math.*;

公共类 MainActivity 扩展 Activity {

static final double pixPerRad = 4850;
static final double center2Dhor = 276.6;
static final double center2Dver = 293.7;
static final double short2D = 426.3;
static final double long2D = 2719.3;
static final double tilt2D = -0.2557;

double minor, major, MSC, CSL; // angles
double CM, MS, ML, CL; // distances
double gQJ, gVQ, gQL, gHL, gVL, gMLV, gCLQ; // temporary guessing variables
double[] gCQ, gmajor; // guessing variables whose guess values will be stored

String[] gmajor_Text;
String[] gCQ_Text;

TextView text1 = null;
TextView text2 = null;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    text1 = (TextView)findViewById(R.id.textView1);
    text2 = (TextView)findViewById(R.id.textView2);

    minor = short2D/pixPerRad;
    major = long2D/pixPerRad;

    MS = 1/asin(minor); 
    ML = MS; 
    CM = sqrt(MS*MS - 1);
    CL = MS - ML;

    // Guessing triangle VQJ:

    for (int i=0; i<2; i++)
    {       
    gCQ[i] = i/3; // First two guesses

    // Side QJ:

    gQJ = sqrt(1 - gCQ[i]*gCQ[i]);

    // Side VQ:

    gQL = sqrt(CL*CL + gCQ[i]*gCQ[i]);
    gCLQ = asin(gCQ[i]/gQL);
    gMLV = gCLQ;
    gHL = ML*cos(gMLV); 
    gVL = 2*gHL;
    gVQ = gVL - gQL;

    // major angle resulting from guess:

    gmajor[i] = 2 * atan(gQJ/gVQ);

    gmajor_Text[i] = String.valueOf(gmajor);
    gCQ_Text[i] = String.valueOf(gCQ);


    }//END for i
    text1.setText(gmajor_Text[0]);
    text2.setText(gCQ_Text[1]);



}//END onCreate

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.activity_main, menu);
    return true;
}

}//结束主活动

【问题讨论】:

  • 堆栈跟踪是否在您的代码中包含行号?发布该代码。 (几乎可以肯定,这只是您代码中的一个错误 - 启动,但没有显示您的活动。但是,如果没有看到任何代码,我们无法真正帮助您。)不清楚您为什么要关注 java.lang.math.* 方面的事情,这几乎可以肯定是无关紧要的......
  • 需要从 logcat 输出中发布代码和堆栈跟踪。没有它,没有人可以帮助你
  • 发布您的活动。
  • 这是一个空指针异常,一个运行时错误通常是由于试图调用一个方法/访问一个为空的对象的字段而引起的——通常是因为它没有被成功初始化。由于错误仅在运行时发生,因此编译器不会捕获它。您需要从完整的堆栈跟踪中获取行号,并找出该行代码在运行时可能无法执行的内容。
  • 完整的堆栈跟踪与活动代码一样重要。

标签: java android eclipse path


【解决方案1】:

你还没有初始化你的数组

double[] gCQ;
// later, you use it as is
gCQ[i] = i/3; 

您应该在onCreate() 或外部进行初始化

gCQ = new double[size];

double[]String[] 也是如此

【讨论】:

  • 是的,就这么简单!愚蠢的我忘记了数组语法。我希望错误消息能提醒我这一点。
【解决方案2】:

不确定您的崩溃是否是由于您使用的是 1.7,但我认为 Android SDK 仅支持 Jdk 1.6。

不确定这是否有效,但这里有一个类似内容的链接: Can the Android SDK work with JDK 1.7?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-04-07
    • 2012-09-02
    • 1970-01-01
    • 2014-09-03
    • 1970-01-01
    • 2017-07-24
    • 2012-11-29
    • 2013-04-16
    相关资源
    最近更新 更多